创建使用PugiXml的静态库时未解析的外部

时间:2012-01-16 18:33:28

标签: visual-c++ pugixml

我正在编写一个使用PugiXml进行xml解析的静态库。以下是Visual Studio 2010的链接器输出(为了便于阅读,我已使用省略号替换了符号):

error LNK2019: unresolved external symbol "public: __thiscall Dae_Library<class Dae_Geometry>::Dae_Library<class Dae_Geometry>(void)" (...) referenced in function "private: bool __thiscall Dae_Doc::ParseDae(void)" (...)
error LNK2019: ^ "public: wchar_t const * __thiscall pugi::xml_node::name(void)const " (...) referenced in function "private: bool __thiscall Dae_Doc::ParseDae(void)" (...)
error LNK2001: ^ "public: wchar_t const * __thiscall pugi::xml_node::name(void)const " (...)
error LNK2019: ^ "public: wchar_t const * __thiscall pugi::xml_attribute::value(void)const " (...) referenced in function "public: void __thiscall Dae_Node::SetXmlNode(class pugi::xml_node &)" (...)
error LNK2019: ^ "public: class pugi::xml_attribute __thiscall pugi::xml_node::attribute(wchar_t const *)const " (...) referenced in function "public: void __thiscall Dae_Node::SetXmlNode(class pugi::xml_node &)" (...)

我尝试过的事情:

  • 明确地实例化我的模板类。
  • 将PugiXml源代码链接到测试项目(目前正在构建我正在构建的静态库)
  • 将PugiXml构建为静态库并在我的lib项目和测试项目中引用它
  • 写作不代替我的纯虚函数。
  • 提供完全不引用pugixml的默认构造函数

过去两天这让我疯了,我真的不知道该怎么办。如果有人能给我任何指示,我会非常欣赏它!

编辑: 值得注意的是,创建一个使用pugixml编译和测试的简单静态库,所以我编写模板和类的方式可能有问题吗?

1 个答案:

答案 0 :(得分:0)

从错误消息中看起来你的PUGIXML_WCHAR_MODE设置不一致。

您可能正在项目配置中设置它,并使用pugixml发行版中的scripts /文件夹中的一个捆绑的vcproj文件。

这个define控制pugixml(char或wchar_t)中使用的字符类型;你必须以相同的方式为pugixml.cpp和使用pugixml的代码设置它 - 建议在pugiconfig.hpp中设置它,或者确保它在包含pugixml的源文件的所有项目中都打开.HPP。在您的情况下,如果您不想修改pugiconfig.hpp,则必须更改pugixml静态库的vcproj。