使用 XCode 16.2 在 Mac M2 上设置 Vulkan 1.3 后出现未知类型名称“uint32_t”

问题描述 投票:0回答:1

环境:Macbook Air M2 Sequoia、Xcode 16.2、VulkanSDK 1.3、glfw 3.4、glm 1.0.1

错误描述:由于标头引用错误而导致构建失败。 main.cpp 包含一个头文件 glfw.h,其中包含另一个头文件 vulkan.h,其中包含另一个头文件 vulkan_core.h,后者使用

uint32_t
来定义别名。即使
uint32_t
已包含在 glfw.h 中,也无法识别
stdint.h
。设置 Xcode 后从 vulkan-tutorials 运行测试代码时会发生这种情况。

错误:未知类型名称“uint32_t”

错误位置:vulkan_core.h

代码:

main.cpp(复制自vulkan-tutorials#setting up Xcode

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

GLFW/glfw3.h

#include <stdint.h>

#if defined(GLFW_INCLUDE_VULKAN)
  #include <vulkan/vulkan.h>
#endif /* Vulkan header */

vulkan/vulkan.h

#include "vulkan_core.h"

vulkan_core.h

...
typedef uint32_t VkBool32;
typedef uint64_t VkDeviceAddress;
typedef uint64_t VkDeviceSize;
typedef uint32_t VkFlags;
typedef uint32_t VkSampleMask;
...

我已按照 vulkan-tutorial#setting-up-Xcode 上的说明进行操作。唯一的区别是我使用

/opt/homebrew/Cellar
而不是
/usr/local/include
/usr/local/lib
在构建设置的 search path 选项卡中设置 header/lib 搜索路径,并且我已将链接设置为递归。 glfw 和 glm 都安装在
/opt/homebrew/Cellar
下。

我已经检查了 stdint.h。它已正确安装到

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h
,并且我已确保它在其他项目中运行良好。

我还尝试将标头 直接添加到 main.cpp 文件中,但这并没有纠正错误。

我是 Xcode 新手,所以可能有一些我不知道的事情。

有什么建议吗?非常感谢。

xcode vulkan stdint
1个回答
0
投票

解决方案:将标头搜索路径从

/opt/homebrew/Cellar
更改为
glfw/include
glm/include
的具体路径。
/opt/homebrew/Cellar
包含太多的库和安装,在递归搜索标头时可能会混合Xcode。

正确的标头搜索路径应该如下所示:

/opt/homebrew/Cellar/glfw/3.4/include
/opt/homebrew/Cellar/glm/1.0.1/include
vulkansdk/macOS/include
# vulkansdk is the specific path to VulkanSDK.

将搜索方法从非递归设置为递归,然后构建应该成功。

© www.soinside.com 2019 - 2024. All rights reserved.