我目前正在开发一个图形项目,并遇到了一个问题。我有两个单独的cpp文件,都需要glm gtx扩展。问题是,当两个文件#include“glm / ext.hpp”时,我收到以下错误:“重复符号glm :: floor_log2(unsigned int)”。
我理解错误的含义,以及导致它的原因(每个编译单元都有自己版本的“glm :: floor_log2(unsigned int)”函数),但我不明白如何解决它。这两个文件都需要访问ext头,如果没有它就不会编译(虽然它们一起不会链接)。
如何正确地将项目编译和链接?
答案 0 :(得分:1)
据我所知,floor_log2
在integer.hpp
(没有inline
个关键字)中声明,并在integer.inl
中定义(包含在integer.hpp
中)。
这是glm
来源中的错误。
您应该将inline
添加到integer.hpp
中的声明中(这将解决您的问题)并通知glm
开发人员他们有错误。