首页 > 解决方案 > #define VMA_IMPLEMENTATION 之后的 Vulkan 内存分配器实现错误

问题描述

Windows 10、Visual Studio 社区 2019

我正在关注https://vkguide.dev/docs/chapter-3/triangle_mesh_code/,它提到要添加#include "vk_mem_alloc.h",如果你编译你会得到链接器错误。然后它描述了你应该把#define VMA_IMPLEMENTATION包含在vk_engine.cpp. 我了解这是如何工作的,并且我只在.cpp文件中包含了一次定义。

问题:在编译该状态之前,对于整个标头中的某些各种功能,“声明与...不兼容”。尝试编译会给我错误:

m_Lock 未知覆盖说明符

m_Lock 未声明的说明符

InitializeSWRLock 未定义

如果您基于以下“所有章节”链接中的 VMA 版本,这些问题的范围从第 4089-4097 行开始。

我什至下载了https://github.com/vblanco20-1/vulkan-guide/tree/all-chapters并尝试编译第 3 章,但我遇到了同样的问题。在同一条线上。我能够编译第 0、1 和 2 章,但由于某种原因,这#define VMA_IMPLEMENTATION给了我这些特定的错误,我无法在网上找到很多关于它们的信息。

编辑: 解决方案:在您的编译器中启用 C++17 我注意到 C++ 标准是 C++14,当我开始编译时将其更改为 C++17。本教程中的 cmake 不会自动将标准设置为 C++17。感谢那些在我工作时发表评论的人,希望这可以帮助另一个程序员

标签: c++memoryallocationvulkan

解决方案


推荐阅读