我目前正在处理一个图形项目,遇到了一个问题。我有两个单独的 cpp 文件,它们都需要 glm gtx 扩展。问题是,当两个文件 #include "glm/ext.hpp"时,我收到以下错误:"duplicate symbol glm::floor_log2(unsigned int)"。
我明白错误的含义和原因(每个编译单元都有自己版本的“glm::floor_log2(unsigned int)”函数),但我不明白如何绕过它。这两个文件都需要访问 ext header ,没有它就无法编译(尽管放在一起,它们不会链接)。
如何正确地编译和链接我的项目?
最佳答案
据我所知,floor_log2
在 integer.hpp
中声明(没有 inline
关键字),并在 中定义>integer.inl
(包含在 integer.hpp
中)。
这是 glm
源代码中的错误。
您应该将 inline
添加到 integer.hpp
中的声明(这将解决您的问题)并通知 glm
的开发人员他们有一个错误。
关于c++ - 如何通过在 glm 中导入 h 文件来修复 'duplicate symbol',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453594/