重复的符号链接器错误(C++帮助)

Vas*_*265 6 c++ linker constraint-programming

我正在学习一些CSP(约束满足)理论的东西,并且正在使用这个库来解析XML文件.我正在使用Xcode作为IDE.

我的程序编译得很好,但是当它链接文件时,我得到XMLParser_libxml2.hh文件的重复符号错误.我的文件是这样分开的:

包含上面的XMLParser文件的类头文件包含类头文件
的类实现文件包含类头文件
的主文件

重复的符号出现在main.o和classfile.o中,但据我所知,我实际上并没有两次添加.hh文件.

完整错误:

ld: duplicate symbol bool CSPXMLParser::UTF8String::to<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >&) constin
/Users/vash265/CSP/Untitled/build/Untitled.build/Debug/Untitled.build/Objects-
normal/x86_64/dStructFill.o and
/Users/vash265/CSP/Untitled/build/Untitled.build/Debug/Untitled.build/Objects-
normal/x86_64/main.o`
Run Code Online (Sandbox Code Playgroud)

将类的实现复制到主文件中并将类实现文件从编译目标中删除会消除错误,但这种混乱是一种混乱,我将很快添加更多类(并且它会很好将它们放在单独的文件中).

正如我已经理解的那样,这是由文件(XMLParser_libxml2.hh)在一个文件中同时具有类和函数定义和实现引起的(似乎这可能是由于在那个'标题'文件).关于如何在main.cpp中粘贴所有类文件的任何想法?(我试过#ifdefs,他们不工作).

小智 3

詹姆斯是对的。头文件中的三个模板函数需要内联声明才能正确链接。谢谢!