我在将 XERCES 函数从 2.6 升级到 2.8 时遇到链接器错误
unresolved external symbol (?resolveEntity@HandlerBase@xercesc_2_8@@UAEPAVInputSource@2@QBG0@Z)
我检查了 xerces-c_2.8.lib 并发现名称 lib 与我的 .obj 文件中的有点不同,如图所示
?resolveEntity@HandlerBase@xercesc_2_8@@UAEPAVInputSource@2@QB_W0@Z
所以我知道链接器不会找到匹配并抛出错误。
但我无法理解为什么我的 .obj 文件包含不同的签名。
代码包含正确的头文件和库,但名称仍然不正确。
任何帮助,将不胜感激。
您可以使用 undname.exe 实用程序恢复原始 C++ 声明。
?resolveEntity@HandlerBase@xercesc_2_8@@UAEPAVInputSource@2@QBG0@Z 转换为:
virtual class xercesc_2_8::InputSource *
__thiscall xercesc_2_8::HandlerBase::resolveEntity(
unsigned short const * const,
unsigned short const * const)
?resolveEntity@HandlerBase@xercesc_2_8@@UAEPAVInputSource@2@QB_W0@Z 转换为:
virtual class xercesc_2_8::InputSource *
__thiscall xercesc_2_8::HandlerBase::resolveEntity(
wchar_t const * const,
wchar_t const * const)
请注意参数类型的差异,unsigned short
vs wchar_t
。由于某种原因,您的编译器无法识别 wchar_t 类型。这可能是因为你有一个非常旧的编译器。或者它可能是一个选项设置错误,在msvc上它是C/C++,语言,“将wchar_t视为内置类型”。或者您有一个宏,可以将字符串类型修改为无符号短整型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)