由于名称修改而无法解析外部符号

2023-12-20

我在将 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(使用前将#替换为@)

由于名称修改而无法解析外部符号 的相关文章

随机推荐