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

Kir*_*ira 8 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
Run Code Online (Sandbox Code Playgroud)

Kir*_*ira 5

相反建设的TinyXML为x64 platforms,然后加入tinyxml.htinystr.h到项目中,我只是说所有的库文件,包括.cpp文件,现在我可以针对x64平台,图书馆,其实,正在兴建的时候我编译整个项目.

  • 这实际上并不使用tinyxml共享库 - 它只是一些丑陋的静态链接形式.请注意,如果要使用新版本的tinyxml,您将需要重新编译您的应用程序(但它是否经常更改?) (2认同)

Dan*_*ien 3

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

\n\n

以下是我从 tinyxml 2.6.2 源构建 DLL 所遵循的步骤:

\n\n
    \n
  1. tinyxml.sln在 MS Visual Studio Express 2012 for Windows Desktop 中打开提供的 SLN 文件。出现提示时选择将旧项目文件转换为新格式。
  2. \n
  3. 从“解决方案平台”中,选择“配置管理器...”
  4. \n
  5. 从“活动解决方案平台:”中选择“<新建...>”
  6. \n
  7. 在“键入或选择新平台:”中,选择“x64”(如果尚未选择)。确保从“Win32”配置复制设置。单击“确定”。单击“关闭”退出配置管理器。
  8. \n
  9. 右键单击解决方案资源管理器中的tinyxml 项目。选择“属性”。
  10. \n
  11. 对于“配置:”,选择“所有配置”。同样,对于“平台:”,选择“所有平台”。
  12. \n
  13. 在配置属性 \xe2\x86\x92 常规页面上,将“配置类型”更改为“动态库 (.dll)”。将“目标扩展名”更改为“.dll”。单击“确定”退出“tinyxml 属性页”对话框。
  14. \n
  15. 选择“Release”配置和“x64”平台。
  16. \n
  17. 再次右键单击“解决方案资源管理器”中的tinyxml 项目,然后选择“重建”。
  18. \n
\n\n

在里面tinyxml_2_6_2\\tinyxml\\x64\\Release你会发现tinyxml.dll,但没有导入库(tinyxml.lib)。这是因为没有导出任何符号。请参阅如何在 Visual C++ 中构建导入库 (.lib) 和 DLL?

\n\n

如果您想采用共享库路线,则需要通过 MSVC 特定的__declspec(dllexport)修饰符导出所需的符号。请参阅Windows 中的符号可见性

\n