我正在使用tinyxml库来解析项目中的XML文件。当我尝试定位x64平台时,我得到了LINKER错误,这里有一个错误:
错误4错误LNK2001:未解析的外部符号“private:static struct TiXmlString :: Rep TiXmlString :: nullrep_“ (?nullrep_ @ TiXmlString @@ 0URep @ 1 @ A)ClassThatUsesTinyXML.obj
更新:我认为没有安装x64版本的tinyxml,但是当我尝试为x64平台构建库时,我遇到了这个错误:
LNK1561: entry point must be defined
答案 0 :(得分:5)
我没有为x64 platforms
构建tinyxml,而是将tinyxml.h
和tinystr.h
添加到项目中,而是添加了所有库文件,包括.cpp
文件,现在我可以实际上,当我构建整个项目时,库就是目标x64平台。
答案 1 :(得分:3)
看起来tinyxml不支持开箱即用的共享库构建。
以下是我从tinyxml 2.6.2源代码构建DLL的步骤:
tinyxml.sln
。选择在提示时将旧项目文件转换为新格式。在tinyxml_2_6_2\tinyxml\x64\Release
中,您会找到tinyxml.dll
,但没有导入库(tinyxml.lib
)。这是因为没有导出符号。见How do I build an import library (.lib) AND a DLL in Visual C++?
如果要转到共享库路径,则需要通过特定于MSVC的__declspec(dllexport)
修饰符导出所需的符号。请参阅Symbol Visibility in Windows。
答案 2 :(得分:1)
为库的编译定义TIXML_USE_STL时会发生错误,但对于链接到库的源则不会发生错误。最终结果是使用库从源代码编译库中的不同代码。