【问题标题】:How to fix 'duplicate symbol' from importing h file in glm如何通过在 glm 中导入 h 文件来修复“重复符号”
【发布时间】:2018-01-22 02:35:39
【问题描述】:

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

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

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

【问题讨论】:

  • .h 文件中使用extern 关键字。
  • 把它们放在不同的命名空间...

标签: c++ linker glm-math


【解决方案1】:

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

这是glm 源代码中的一个错误。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2016-10-07
    • 1970-01-01
    • 2017-06-01
    • 2019-12-16
    • 2019-02-13
    • 2013-05-15
    相关资源
    最近更新 更多