我正在学习一些CSP(约束满足)理论知识,并且正在使用这个库来解析XML文件:this。 我在Xcode中使用IDE。
我的程序编译正常,但当它去链接文件时,我会得到一个重复的符号错误,其中包括XMLParser_libxml2.hh文件。我的文件按如下方式分开:
一个类头文件,其中包括上面的XMLParser文件
一个包括类头文件的类实现文件
一个包括类头文件的主文件
这个重复的符号出现在main.o和classfile.o中,但据我所知,我实际上并没有添加那个.hh文件两次。
完整错误:
将类的实现复制到主文件中,并将类的实现文件从编译目标中移除可以消除错误,但这样做会导致混乱不堪,而且我很快就要添加更多的类(将它们放在单独的文件中会更好)。
据我所知,这是由于文件(XMLParser_libxml2.hh)在一个文件中同时具有类和函数定义以及实现引起的(似乎由于在该“头”文件中使用了模板,这可能是必要的)。有什么办法可以避免把所有的类文件都放在我的main.cpp中吗?(我已经尝试过 #ifdefs,但它们不起作用)。
我的程序编译正常,但当它去链接文件时,我会得到一个重复的符号错误,其中包括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,但它们不起作用)。
inline
? - James McNellis