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



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

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构建为静态库,并在我的库项目和测试项目中引用它
  • 写作不做任何功能来代替我的纯虚拟功能
  • 提供根本不引用pugixml的默认构造函数

在过去的两天里,这让我抓狂,我真的不知道该怎么办。如果有人能给我任何指导,我会非常感谢!

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

从错误消息来看,您似乎设置PUGIXML_WCHAR_MODE不一致。

很可能是您在项目配置中设置了它,并按原样使用pugixml分发中脚本/文件夹中的一个捆绑vcproj文件。

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

相关内容

  • 没有找到相关文章

最新更新