MFC调用外部dll时,出现无法解析的外部符号的解决方法)

最近在一个MFC工程文件中调用了多个dll和lib文件,包括matlab和can连接文件,时常出现“无法解析的外部符号”的错误,特此记录解决方法。

 

通常出现这个问题的原因有以下几个:

1.没有导入相应的lib库文件。

2.类成员声明了,但是却没有定义。也可能是定义的与声明的不一致。

3.没有包含响应的头文件和源文件。

4.没有在项目属性页的链接器的命令行选项加入相应的类包。

5.没有在c++包含目录和库目录加入相应的类包路径。

6.dll的版本与平台不兼容,64位和32位的差别。

 

通常对于第三方的SDK一般只提供给我们DLL,并提供相应的头文件及LIB文件;这里的LIB文件是链接时需要的,它包含了DLL中函数的想关信息,不是静态编译产生的静态库,因此我们只需要在项目添加对这些LIB的依赖。

一般情况下按照项目--》属性--》配置属性--》链接器-》输入--》附加依赖项

的方式在其中加入所需库文件,注意把库文件写进去,每个库文件后加分号,同时在

“链接器--》常规--》附加库目录”中填入相应库所在目录。

 

为了保险可以在

VC++目录--》常规--》包含目录和VC++目录--》常规--》库目录中中填入相应库所在目录。

然后在工程文件中加入头文件#include "ControlCAN.h"

以及

#pragma comment(lib,"ControlCAN.lib")

 

 

如果完成这些操作之后还是存在无法解析的外部符号的问题,应该是版本与平台不兼容。将当前平台(win32/x64)替换成(x64/win32)再进行编译,一般就可以通过了。

需要再新的平台重新设置上述操作,并将目标计算机改为当前平台。

 

 

 

 

posted @   艾绒  阅读(2866)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示