我正在尝试使用Xerces编写代码,该构建工作正常,但是当涉及到链接时,它将失败并显示以下错误:

我正在使用Visual Studio 2008 Win32 /带有xerces 3(xerces-c_3.lib)/使用多线程DLL(/ MD),并且检查“将wchar_t作为内置类型处理”设置为是。 。

您知道我的错误可能在哪里吗?

3>Linking...
3>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
3>signatureinserter.lib(schemeSignatureInserter.obj) : error LNK2001: unresolved external symbol "public: static char * __cdecl xercesc_3_1::XMLString::transcode(unsigned short const * const,class xercesc_3_1::MemoryManager * const)" (?transcode@XMLString@xercesc_3_1@@SAPADQBGQAVMemoryManager@2@@Z)
3>signatureinserter.lib(schemeSignatureInserter.obj) : error LNK2001: unresolved external symbol "public: static char const * const xercesc_3_1::XMLUni::fgXercescDefaultLocale" (?fgXercescDefaultLocale@XMLUni@xercesc_3_1@@2QBDB)
3>signatureinserter.lib(schemeSignatureInserter.obj) : error LNK2001: unresolved external symbol "public: static class xercesc_3_1::MemoryManager * xercesc_3_1::XMLPlatformUtils::fgMemoryManager" (?fgMemoryManager@XMLPlatformUtils@xercesc_3_1@@2PAVMemoryManager@2@A)
fatal error LNK1120: 3 unresolved externals

最佳答案

这是一个很老的话题,但是我遇到了同样的问题。

解决方案是确保您包含平台特定的代码:

#include <xercesc/util/PlatformUtils.hpp>


至少对于库的当前版本xerces-c-3.1.4,在此处定义了这些静态成员。

(不确定转码方法,可能在以前的版本中也包括在内吗?!在我的情况下,它没有问题)

关于c++ - Visual Studio 2008的Xerces链接错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21915045/

10-11 23:06