c++ - 如何通过在 glm 中导入 h 文件来修复 'duplicate symbol'

标签 c++ linker glm-math

我目前正在处理一个图形项目,遇到了一个问题。我有两个单独的 cpp 文件,它们都需要 glm gtx 扩展。问题是,当两个文件 #include "glm/ext.hpp"时,我收到以下错误:"duplicate symbol glm::floor_log2(unsigned int)"。

我明白错误的含义和原因(每个编译单元都有自己版本的“glm::floor_log2(unsigned int)”函数),但我不明白如何绕过它。这两个文件都需要访问 ext header ,没有它就无法编译(尽管放在一起,它们不会链接)。

如何正确地编译和链接我的项目?

最佳答案

据我所知,floor_log2integer.hpp 中声明(没有 inline 关键字),并在 中定义>integer.inl(包含在 integer.hpp 中)。

这是 glm 源代码中的错误。

您应该将 inline 添加到 integer.hpp 中的声明(这将解决您的问题)并通知 glm 的开发人员他们有一个错误。

关于c++ - 如何通过在 glm 中导入 h 文件来修复 'duplicate symbol',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453594/

相关文章:

c++ - 粉碎堆栈 : overflow

c++ - 无法更改 CMake 中的默认链接器

c++ - (C++ 和 OpenGL)我试图在批处理渲染器中旋转一组顶点(它将模拟一个正方形),但它不是 100% 工作 :(

c++ - glm 设置对象位置

c++ - CMake:包含目录的排序(如何混合基于系统和用户的包含路径?)

c++ - 如何使用关键事件来翻译 OpenGL 中的对象?

c++ - 应用程序因 _Unwind_Resume 中止错误而崩溃

c++ - C++中方括号内的双点是什么意思

c++ - STL算法查找范围内第一个元素的所有元组

C++ GL 链接器 undefined reference