Библиотеки конфликтуют друг с другом? Давать ошибки переопределения.- TinyXML2 и Cocos2d-x
Я пытаюсь скомпилировать свою программу и получаю странные ошибки. Я искал какое-либо переопределение в 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
1 ответ
Решение
Cocos2D-X уже включает в себя TinyXML. Ошибка указывает, что исходные файлы TinyXML компилируются дважды. Например, если cocos2d-x является отдельной целью сборки и вы добавили файлы TinyXML в цель проекта приложения, эта ошибка будет возникать из-за одинаковых символов, существующих в двух библиотеках / объектных файлах.
Решение: не добавляйте исходные файлы TinyXML в ваш проект, просто #include заголовки TinyXML, предоставленные cocos2d-x.