MFC开发调用外部的库时有时候会出现".obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLPlatformUtils::Terminate(void)" (__imp_?Terminate@XMLPlatformUtils@xercesc_2_8@@SAXXZ),该符号在函数 __catch$?set@XercesParser@@QAE_NAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV23@1@Z$0 中被引用"的错误,这主要还是调用库出现了问题。那么该怎么解决呢?

工具/原料
- 电脑
- vs2010
方法/步骤
- 1
编译dll工程时除了dll文件之外,还会生成一个lib文件,把它拷贝过来,加入到工程中。
- 2
要在项目-属性-C/C++-附加包含目录中:填写附加头文件所在目录 ,分号间隔多项。
- 3
还要在项目-属性-链接器-常规-附加库目录中填写附加依赖库所在目录,可以用 分号间隔多项。
- 4
还要在项目-属性-链接器-输入-附加依赖项中填写附加依赖库的名字.lib ,使用空格或分号间隔多项。
- 5
可能是添加的.lib库有问题,对于Debug模式下一定添加Debug的库,Release模式下一定要添加release模式下编译出的库,否则就会出现这种问题。
- 6
要把dll放在debug或者release的目录下,编译时提示缺少哪个dll就将此dll放置在目录下。
- 7
对于添加的库要在stdafx.h中声明,形式如下所示:
#include "seglib.h"
#pragma comment(lib,"seglib.lib")
#pragma comment(lib,"opencv_core246.lib")
END
注意事项
- 出现这种问题时,一定要仔细检查,按照以上方法一般都可以解决的。