C++ 如何修复';重复符号';从导入glm中的h文件

C++ 如何修复';重复符号';从导入glm中的h文件,c++,linker,glm-math,C++,Linker,Glm Math,我目前正在从事一个图形项目,遇到了一个问题。我有两个单独的cpp文件,它们都需要glm gtx扩展名。问题是,当两个文件#都包含“glm/ext.hpp”时,我得到以下错误:“重复符号glm::floor_log2(unsigned int)” 我理解错误的含义,以及导致错误的原因(每个编译单元都有自己版本的“glm::floor_log2(unsigned int)”函数),但我不知道如何避免它。这两个文件都需要访问ext头文件,没有ext头文件就无法编译(尽管在一起,它们不会链接) 如何正确

我目前正在从事一个图形项目,遇到了一个问题。我有两个单独的cpp文件,它们都需要glm gtx扩展名。问题是,当两个文件#都包含“glm/ext.hpp”时,我得到以下错误:“重复符号glm::floor_log2(unsigned int)”

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


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

据我所知,
floor\u log2
integer.hpp
中声明(没有
inline
关键字),并在
integer.inl
中定义(包括在
integer.hpp
中)

这是
glm
源代码中的一个bug


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

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