【发布时间】:2014-10-22 12:11:13
【问题描述】:
我正在开发一个小型 3D 引擎,使用 SDL2 管理窗口,并使用 Assimp 加载模型。
当我编译我的程序时,由于我实现了 Assimp,我在以下整数类型上出现“歧义符号”错误,链接到 sdl_stdinc.h 和 assimp/metadata.h
-
assimp/metadata.h:int64_t
-
sdl_stdinc.h:int8_tint16_tint32_tint64_tuint8_tuint16_tuint32_tuint64_t
据我了解,这是一个兼容性问题:Assimp 和 SDL2 都试图重新定义这些类型,但在同一个命名空间中,因此编译器不知道在两者之间选择哪一个。
虽然这两个库没有包含在同一个文件中...... 这样的事情会对该错误产生影响吗?
我该如何解决?我在网上找不到任何解决方案,我有一种不好的感觉,我必须更改,例如,将 SDL2 更改为 GLFW 来解决我的问题。
【问题讨论】:
-
这些都是标准 C 类型,因此这些标头都不应该尝试定义它们。我建议在标题中找到它尝试定义这些内容的位置,然后相应地调整您的设置(希望这些定义隐藏在可移植宏后面)。
-
C 没有“命名空间”