C Assimp和SDL2之间的int类型周围的不明确符号

C Assimp和SDL2之间的int类型周围的不明确符号,c,sdl,sdl-2,assimp,C,Sdl,Sdl 2,Assimp,我正在开发一个小型3D引擎,使用SDL2管理窗口,并使用Assimp加载模型 当我编译我的程序时,由于我实现了Assimp,我在以下整数类型上出现了一个“不明确的符号”错误,链接到sdl_stdinc.h和Assimp/metadata.h assimp/metadata.h: int64\u t sdl_stdinc.h: int8\u t int16\u t int32\u t int64\u t uint8\u t uint16\u t uint32\u t uint64\u t

我正在开发一个小型3D引擎,使用SDL2管理窗口,并使用Assimp加载模型

当我编译我的程序时,由于我实现了Assimp,我在以下整数类型上出现了一个“不明确的符号”错误,链接到
sdl_stdinc.h
Assimp/metadata.h

  • assimp/metadata.h
    • int64\u t
  • sdl_stdinc.h
    • int8\u t
    • int16\u t
    • int32\u t
    • int64\u t
    • uint8\u t
    • uint16\u t
    • uint32\u t
    • uint64\u t
据我所知,这是一个兼容性问题:Assimp和SDL2都试图重新定义这些类型,但它们位于同一名称空间中,因此编译器不知道在两者之间选择哪一个

但这两个库不包含在同一个文件中这样的事情会对错误产生影响吗?


还有我如何解决这个问题?我在网络上找不到任何解决方案,我有一种不好的感觉,我将不得不更改,例如,SDL2到GLFW来解决我的问题。

您可以为每个模棱两可的声明包含cstdint和put std::type:

#include <cstdint.h>

std::int8_t
#包括
std::int8\t

这些都是标准的C类型,因此这两个标题都不应该试图定义它们。我建议在标题中找到它试图定义这些东西的位置,然后相应地调整您的设置(希望这些定义隐藏在可移植性宏后面)