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 @ 2020-04-14 11:27  艾绒  阅读(2592)  评论(0编辑  收藏  举报