Xerces链接错误原因之/Zc:wchar_t-设置不一致

Posted For The Glory

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xerces链接错误原因之/Zc:wchar_t-设置不一致相关的知识,希望对你有一定的参考价值。

今天程序需要使用Xerces作为xml文件的解析与序列化工具,使用的是Xerces2.7.0版本。具体编译教程如下:

成功编译出了Xerces.dll和Xerces.lib。但是在链接到主工程的时候,总是链接失败。报错如下

error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static wchar_t const * const xercesc_2_7::XMLUni::fgDOMWRTFormatPrettyPrint" (

 

原因:主工程和Xerces库工程宽字符wchar使用不一致造成的。其中Xerces类型定义如下:

参考:https://msdn.microsoft.com/en-us/library/dh8che7s.aspx 可知:When /Zc:wchar_t is specified, _WCHAR_T_DEFINED and _NATIVE_WCHAR_T_DEFINED symbols are defined. 

所以只要保证两个工程的XMLCh类型定义一致就可以。都是wchar_t 或者都是unsigned short。

其中:/Zc:wchar_t的设置为:c/c++ ->语言 

保证两个工程的配置一直就行。

PS:在查资料的过程中有人遇到两个工程的字符集设置不一样也会导致这样的链接错误。

 

以上是关于Xerces链接错误原因之/Zc:wchar_t-设置不一致的主要内容,如果未能解决你的问题,请参考以下文章

使用 Xerces 将 DOM 序列化为 FileOutputStream

Xerces 错误:org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl

不推荐使用有关选项“Gm”的不相关警告

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 x 无效(代码

正在尝试构建 xerces c++ 解析器。 Netbeans 和命令行构建错误未定义对“xercesc_3_2 ...”的引用

java.lang.ClassNotFoundException:org / apache / xerces / jaxp / DocumentBuilderFactoryImpl