MFC调用外部dll时,出现无法解析的外部符号的解决方法)
2024-10-22 05:06:36
最近在一个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)再进行编译,一般就可以通过了。
需要再新的平台重新设置上述操作,并将目标计算机改为当前平台。
最新文章
- C++类的静态成员详解
- js串讲整理
- hdoj 1385Minimum Transport Cost
- ACE - ACE_Task源码剖析及线程池实现
- 2016-08-16: copy-and-swap
- HTML5 离线缓存忽略主页实例
- AT&;T汇编
- css 水平居中的办法
- 《经久不衰的Spring框架:SpringMVC 统括》
- js验证15位或18位身份证
- js学习笔记<;拷贝传值,引用传址和匿名函数>;
- Fu+ 后台管理 (Thinkphp)
- 程序员如何避免996、icu?欢迎来讨论一下。
- 时间规划在Optaplanner上的实现
- 第四十一天 socker server和 event
- iptables 扩展匹配 第三章
- python-day75--django项目问题详细
- Alpha冲刺第4天
- JAVA Double去掉科学计数";E";
- PHP -- 模拟测试上传文件
热门文章
- 腾讯云静态资源放到cos存储桶里,并开启CDN自定义域名加速
- FreeRdp(一):主要数据结构
- npm install报错C:\Users\Guyang\AppData\Roaming\npm-cache\_logs\xxx-14T01_06_33_159Z-debug-0.log
- ElasticSearch (Es) 分组查询 记录
- mybatis-plus 时间查询
- (0720) 【 表示 n&#39;b0; 】
- sap软件功能介绍及主要功能(模块)有哪些?
- [vsCode]Visual Studio Code环境变量不同步
- ORCAD中,怎么一次性去掉所有元器件下面的下划线呢
- [转]B树与B+树----mysql的索引结构