gpt4 book ai didi

c++ - 重复符号链接(symbolic link)器错误(C++ 帮助)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:08 26 4
gpt4 key购买 nike

我现在正在学习一些 CSP(约束满足)理论,并且正在使用 this解析 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`

将类的实现复制到主文件中并将类实现文件从编译目标中取出可以消除错误,但这样一团乱麻,我很快就会添加更多的类(而且它会最好将它们放在单独的文件中)。

据我了解,这是由文件 (XMLParser_libxml2.hh) 在一个文件中同时具有类和函数定义和实现引起的(由于使用,这似乎是必要的)该“头”文件中的模板)。关于如何绕过将所有类文件粘贴到 main.cpp 中的任何想法? (我试过 #ifdefs,它们不起作用)。

最佳答案

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

关于c++ - 重复符号链接(symbolic link)器错误(C++ 帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com