由于不想使用QLibrary,一直都在找最简单的办法。以下是我跑通的整个过程:
-
刚开始项目环境:VS2015生成的TestDll(以下简称TD),Qt只有mingw32环境;经过多次尝试都会报一堆头文件错误,最后尝试下载msvc2015环境去加载dll。
-
由于我是win7 32位环境,所以我又找到了一个5.8版本msvc2015环境,官网无法下载,可以看这里
-
安装MSVC2015需要配置调试器,这个网上攻略很多,我参考了这个链接。针对MSVC2015 32位的我已经下载下来放到百度网盘,提取码:sgld,下载出来直接安装就行。
-
安装后,先把之前VS2015生成的TD.dll、TD.lib、TD.h(头文件要在创建VS项目时选择导出符号)放到一个API文件夹里,这个文件夹就是我们要用到的全部了。
-
新建Qt项目,右键项目名-添加库-添加外部库-只选择windows平台,然后windows三个选项全部不选,最后选库路径。把API文件夹复制到pro文件同一路径下,然后在选中这个路径的TD.lib就行。
-
只需要选择库文件路径,包含路径会自动生成。添加成功后,pro文件会出现下列代码
win32: LIBS += -L$$PWD/API/ -lTD
INCLUDEPATH += $$PWD/API
DEPENDPATH += $$PWD/API
- 在需要使用dll的文件夹里直接include,就可以使用了,一般来说Qt类里该头文件处于__declspec(dllimport)状态,可以自己打开检查下。
#include "API/TD.h"
- 到这一步已经可以直接调用了,但是我会报无法解析的__declspec(dllimport)错误,经过多次测试搜索,到最后用了QLibrary还是在报错。最后发现问题出在编码格式上,我的VS2015默认编码格式ANSI,Qt也是ANSI,但VS2015生成的动态库头文件编码格式是UTF-8。编码格式可以通过记事本-打开-另存为查看,将TD.h文件使用Nodepad++修改格式后,编译通过。
- 这种方式很方便,只需要引入一个头文件就可以调用。我的环境是成功的,此文章仅供参考。