库之间存在冲突?给出重新定义错误.- TinyXML2和Cocos2d-x

Libraries conflicting with eachother? Giving redefinition errors.- TinyXML2 and Cocos2d-x

本文关键字:定义 错误 Cocos2d-x TinyXML2 新定义 冲突 存在 之间      更新时间:2023-10-16

我正试图编译我的程序,并得到奇怪的错误。我在Cocos2d-x中寻找任何类型的重新定义,但似乎找不到。我只是不知道该从哪里着手,这些词到底是什么意思。

1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: char const * __thiscall tinyxml2::XMLElement::GetText(void)const " (?GetText@XMLElement@tinyxml2@@QBEPBDXZ) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: enum tinyxml2::XMLError __thiscall tinyxml2::XMLElement::QueryIntText(int *)const " (?QueryIntText@XMLElement@tinyxml2@@QBE?AW4XMLError@2@PAH@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: enum tinyxml2::XMLError __thiscall tinyxml2::XMLElement::QueryFloatText(float *)const " (?QueryFloatText@XMLElement@tinyxml2@@QBE?AW4XMLError@2@PAM@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: __thiscall tinyxml2::XMLDocument::XMLDocument(bool,enum tinyxml2::Whitespace)" (??0XMLDocument@tinyxml2@@QAE@_NW4Whitespace@1@@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: virtual __thiscall tinyxml2::XMLDocument::~XMLDocument(void)" (??1XMLDocument@tinyxml2@@UAE@XZ) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: class tinyxml2::XMLNode * __thiscall tinyxml2::XMLNode::InsertFirstChild(class tinyxml2::XMLNode *)" (?InsertFirstChild@XMLNode@tinyxml2@@QAEPAV12@PAV12@@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: void __thiscall tinyxml2::XMLNode::DeleteChildren(void)" (?DeleteChildren@XMLNode@tinyxml2@@QAEXXZ) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: enum tinyxml2::XMLError __thiscall tinyxml2::XMLDocument::LoadFile(char const *)" (?LoadFile@XMLDocument@tinyxml2@@QAE?AW4XMLError@2@PBD@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: enum tinyxml2::XMLError __thiscall tinyxml2::XMLDocument::SaveFile(char const *,bool)" (?SaveFile@XMLDocument@tinyxml2@@QAE?AW4XMLError@2@PBD_N@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: class tinyxml2::XMLElement * __thiscall tinyxml2::XMLDocument::NewElement(char const *)" (?NewElement@XMLDocument@tinyxml2@@QAEPAVXMLElement@2@PBD@Z) already defined in tinyxml2.obj
1>libcocos2d.lib(libcocos2d.dll) : error LNK2005: "public: class tinyxml2::XMLText * __thiscall tinyxml2::XMLDocument::NewText(char const *)" (?NewText@XMLDocument@tinyxml2@@QAEPAVXMLText@2@PBD@Z) already defined in tinyxml2.obj

Cocos2D-X已经包含了TinyXML。该错误表明TinyXML源文件被编译了两次。例如,如果cocos2d-x是一个单独的构建目标,并且你已经将TinyXML文件添加到应用程序项目目标中,则由于两个库/对象文件中存在相同的符号,因此会出现此错误。

解决方案:不要将TinyXML源文件添加到项目中,只需#include由cocos2d-x提供的TinyXML头文件