【问题标题】:Ambiguous Symbol around int types between Assimp and SDL2Assimp 和 SDL2 之间的 int 类型的歧义符号
【发布时间】:2014-10-22 12:11:13
【问题描述】:

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

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

  • assimp/metadata.h:
    • int64_t
  • sdl_stdinc.h:
    • int8_t
    • int16_t
    • int32_t
    • int64_t
    • uint8_t
    • uint16_t
    • uint32_t
    • uint64_t

据我了解,这是一个兼容性问题:Assimp 和 SDL2 都试图重新定义这些类型,但在同一个命名空间中,因此编译器不知道在两者之间选择哪一个。

虽然这两个库没有包含在同一个文件中...... 这样的事情会对该错误产生影响吗?

我该如何解决?我在网上找不到任何解决方案,我有一种不好的感觉,我必须更改,例如,将 SDL2 更改为 GLFW 来解决我的问题。

【问题讨论】:

  • 这些都是标准 C 类型,因此这些标头都不应该尝试定义它们。我建议在标题中找到它尝试定义这些内容的位置,然后相应地调整您的设置(希望这些定义隐藏在可移植宏后面)。
  • C 没有“命名空间”

标签: c sdl sdl-2 assimp


【解决方案1】:

您可以包含 cstdint 并为每个模棱两可的声明放置 std::type:

#include <cstdint.h>

std::int8_t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2020-04-21
    相关资源
    最近更新 更多