Qt系列文章目录
前言
今天在qt下调用同事写的dll,发现总是调用失败
HINSTANCE hlib=LoadLibrary(TEXT("MinGW32.dll"));
hlib总是返回空,感觉没有头绪
一、错误原因定位
1.首先确认CartDll.dll是否完整,没有缺少相关的dll库
使用老牌工具:Dependencies.exe
dependencywalker官网下载
把你要查看的dll拖入Dependencies.exe,如果是下图,没有问号,说明没有缺少依赖项
如果像下图中:libifcoremd.dll
libifportMD.dll
libmmd.dll
这三个库前面图标中有问号,说明CartDll.dll依赖这3个库,需要把这3个库宝贝到CartDll.dll同级目录下,就不会出现问号了,当然了一定要匹配才行,比方说这三个库外加CartDll.dll他们的编译方式同事相同的,例如都使用MinGW32、MinGW64, windows x64或者windows x86等
二、在Qt中查看程序编译方式
1.查看配置
点击“工具”->“选项”
## 2.选择Desktop Qt5.12.9 MinGW 32-bit
因为同事提供的CartDll是用MinGW32位编译的,如果选择 MSVC2017的话,加载CartDll就会失败
![在这里插入图片描述](https://img-blog.csdnimg.cn/25ce65d87bc7497ea41fdb10a6428cfc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aaZ5Li6,size_20,color_FFFFFF,t_70,g_se,x_16)
## 3.确认编译是用Desktop Qt5.12.9 MinGW 32-bit
选择“Debug”带电脑图标,然后构建
![在这里插入图片描述](https://img-blog.csdnimg.cn/99db05a6e13a40a0a291a7f5dfcf30df.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aaZ5Li6,size_20,color_FFFFFF,t_70,g_se,x_16)
然后,点击“项目”带扳手图标,在选择Build和Run
![在这里插入图片描述](https://img-blog.csdnimg.cn/129eb57cb1924d03a0b89cb065bc0cff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aaZ5Li6,size_20,color_FFFFFF,t_70,g_se,x_16)
# 总结
总之在调用别人写的dll时,一定要确认别人的编译方式,否则可能调用失败