2016 - 2024

感恩一路有你

解决MFC开发调用外部库出现的__declspec(dllimport)无法解析的外部符号问题

浏览量:4904 时间:2024-04-02 16:28:49 作者:采采

在进行MFC开发时,经常会遇到调用外部库出现“error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLPlatformUtils::Terminate(void)" (__imp_?@xercesc_2_8@@SAXXZ),该符号在函数"__catch$?@@QAE_NAAV?$?$@std@@V?$@2@@std@@@Z$0”中被引用”的错误。这种情况通常是由于调用库出现了问题。那么我们应该如何解决呢?

步骤一:拷贝生成的lib文件并加入工程中

编译dll工程时除了生成dll文件之外,还会得到一个对应的lib文件。我们需要将这个lib文件拷贝到工程目录下,并将其加入到工程中。

步骤二:配置附加包含目录和库目录

在项目属性设置中,进入“C/C -> 附加包含目录”,填写附加头文件所在的目录路径,多个目录之间用分号分隔。然后在“链接器 -> 常规 -> 附加库目录”中填写附加依赖库所在的目录路径,同样也可以用分号分隔多个目录。

步骤三:添加依赖项和声明外部库

继续在项目属性中,进入“链接器 -> 输入 -> 附加依赖项”,填写需要依赖的库名字以.lib结尾,同样使用空格或分号分隔多个库。此外,在stdafx.h文件中声明添加的外部库,格式如下:

```cpp

include "seglib.h"

pragma comment(lib, "")

pragma comment(lib, "opencv_")

```

步骤四:调整库的模式匹配

确保添加的.lib库与当前编译模式匹配。在Debug模式下应添加Debug版本的库,在Release模式下应添加Release版本对应的库,否则会出现链接错误。

步骤五:正确放置dll文件

最后,将所需的dll文件放置在程序编译生成的debug或release目录下。若编译时提示缺少某个dll,则将该dll放置在相应的目录下即可解决该问题。

通过以上几个步骤,我们可以有效解决调用外部库时出现的__declspec(dllimport)无法解析的外部符号问题,确保项目顺利编译和链接。希望这些方法能帮助到开发者解决类似的困扰。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。