Tinyxml - 定位x64平台时链接错误

时间:2013-03-28 09:13:00

标签: c++ tinyxml

我正在使用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

3 个答案:

答案 0 :(得分:5)

我没有为x64 platforms构建tinyxml,而是将tinyxml.htinystr.h添加到项目中,而是添加了所有库文件,包括.cpp文件,现在我可以实际上,当我构建整个项目时,库就是目标x64平台。

答案 1 :(得分:3)

看起来tinyxml不支持开箱即用的共享库构建。

以下是我从tinyxml 2.6.2源代码构建DLL的步骤:

  1. 在MS Visual Studio Express 2012 for Windows桌面中打开提供的SLN文件tinyxml.sln。选择在提示时将旧项目文件转换为新格式。
  2. 从“解决方案平台”中,选择“Configuration Manager ...”
  3. 从“Active solution platform:”选择“< New ...>”
  4. 在“输入或选择新平台:”中选择“x64”(如果尚未选择)。确保从“Win32”配置中复制设置。单击确定。单击“关闭”以退出配置管理器。
  5. 右键单击解决方案资源管理器中的tinyxml项目。选择“属性”。
  6. 对于“配置:”,选择“所有配置”。同样,对于“平台:”,选择“所有平台”。
  7. 在配置属性→常规页面上,将“配置类型”更改为“动态库(.dll)”。将“目标扩展名”更改为“.dll”。单击“确定”退出tinyxml“属性页”对话框。
  8. 选择“发布”配置和“x64”平台。
  9. 再次在Solution Explorer中右键单击tinyxml项目,然后选择“Rebuild”。
  10. 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时会发生错误,但对于链接到库的源则不会发生错误。最终结果是使用库从源代码编译库中的不同代码。