前言
今天在qt下调用同事写的dll,发现总是调用失败
HINSTANCE hlib=LoadLibrary(TEXT("MinGW32.dll"));
hlib总是返回空,感觉没有头绪
一、错误原因定位
1.首先确认CartDll.dll是否完整,没有缺少相关的dll库
使用老牌工具:Dependencies.exe
把你要查看的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://ucc.alicdn.com/images/user-upload-01/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://ucc.alicdn.com/images/user-upload-01/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://ucc.alicdn.com/images/user-upload-01/129eb57cb1924d03a0b89cb065bc0cff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aaZ5Li6,size_20,color_FFFFFF,t_70,g_se,x_16) # 总结 总之在调用别人写的dll时,一定要确认别人的编译方式,否则可能调用失败