看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说:
使用Qt编写模块化插件式应用程序
Qt 一步一步实现dll调用(附源码)---(这一篇里没有调用类成员的)
Qt调用dll中的功能函数
?我就是按照这上面的教程一步步做的,可惜了都没成功~~~这里面都有一个最重要的步骤没有说清楚(可能怪我笨~~),路径问题!!!
所以这里自我做一下总结:
创建时选择C++ Library就可以了,然后选择Shared Library(共享库),其他默认OK。
创建好后文件如下(我这里工程名为:dll)
其中dll.pro代码为:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
dll_global.h代码为:
1 2 3 4 5 6 7 8 9 |
|
dll.h代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
dll.cpp代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
运行后在生成目录里生成了dll.dll、libdll.a、dll.o三个文件(Windows下使用MinGW编译运行),如图:
新建一个调用项目”DllTest“:
将dll.h和dll_global.h两个文件放到代码目录中:
其中DllTest.pro代码如下:
1 2 3 4 5 6 |
|
1 2 3 4 5 |
|
main.cpp代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
这里将dll.dll文件放到调用项目的生成目录下(Debug上面一层)即DllTest-Debug(我这里是这个名字,你那里可能不同)目录下:
编译,运行,OK!
这里要特别注意dll.dll的存放位置,还有要在.pro文件中增加一个 LIBS += dll.dll 用来指示路径,也可使用绝对路径如先将dll.dll放到D:/API/下,则应该设置为:LIBS += "D:/API/dll.dll"
如果想在资源管理器中直接双击exe文件打开,则dll.dll要放到和exe同目录下!
这个是显式调用的方法!
代码下载 http://download.csdn.net/detail/lomper/8183207
说明:下载的代码下载好后,要将LIBS += "D:/API/dll.dll" 更改成:LIBS += dll.dll 就可直接运行了。(项目DllTest.pro)