QT创建以及调用DLL(Min-GW 64-bit)
create by --MK
1. 新建一个 工程, 选择 Library --> c++ 库
2. 默认选择 共享库 --> 自定义名称 Hello_DLL --> 创建路径必须要纯英文的
3. 这里我只选择一个 kit 框架-- MinGW 64-bit , 我的是 Win7 64bit 系统,但我只有用这个 QT kit 才能正常调用 DLL , 暂时无解,望高手解答
4. 按照各自需求选择你可能会用到的 QT 库, 我的项目是Socket 通信 , 所以我勾选了以下三个, 但是这个 demo 暂时用不上 QtWidgets 和 QtNetwork 这两个库,仅供演示
5. 自定义你喜欢的 nice 的类名吧
6.这里我用编译器默认选项, 啥也不操作, 直接点击 ---完成(F)
7. 看到没, 出来了, 接下来就弄你的 dll
8. 双击 hello_dll.h 头文件 , 在 public 下自定义我的 DLL 函数 sayHello();
9. 双击 hello_dll.cpp 文件, 实现我的 DLL 函数 sayHello();
注意 , qDebug 函数的调用要先导入头文件 "qdebug.h"
10. 来到 项目 --> 构建目录 , 这里修改成你自己项目的路径 , 再接一个 bin 路径 (方便查找编译后生成的 debug 和 release 文件夹) --> 最后 点击 ? 编译一下 (编译没有报错即可)
11. 回到你的工程目录 , 找到你刚刚编译生成的 DLL 文件, 看到这个路径没, 就是我上面修改的路径, 因为我是在 debug 模式下编译的, 所以 debug 文件夹就会生成 DLL文件 , 至此, DLL 创建完成
===================================================
分水岭 , 为什么有分水岭这个叫法 oh , that's not my business
===================================================
12. 调用生成的 DLL , 新建一个 窗体程序
13.我命名 TEST_HELLO , 你们自己注意项目存放的路径
14. ok, 又选择 kit , 当然是选择跟 DLL 一样的 kit 框架啊 , 我依然选择 MinGW 64-bit
15.自己定义一个喜欢又 nice 的类名哈
16. 没办法, 太懒了, 依旧是默认选项配置, 直接点击 完成(F) 按钮
17. 看到没, 生成了项目, 写这一步没啥意义 , 纯粹刷一下存在感
18. 回到 Hello_DLL 工程路径 , 找到要用的 .h(header) 头文件复制到 TEST_HELLO 工程的路径下
19. 在 Hello_DLL工程下, 把 debug 文件夹里生成的 DLL文件全部复制到 TEST_HELLO 工程的路径下
20. 回到 TEST_HELLO工程, 右键点击编译器 , 弹出的菜单中 --> 添加现有文件...
21. 选中刚刚复制进来的两个头文件以及 DLL文件一起 添加进 TEST_HELLO 的工程中
22. 配置 TEST_HELLO 的编译路径, 不建议用系统默认的路径,我还是在 本地路径下 加个 bin 目录
23. 随便加个控件, 我们在控件上测试我们的 DLL
24. 来到 mainwindow.cpp 文件 , 导入我的头文件 ,在控件函数中创建对象并引用我的 sayHello() 函数-->看到没有报错很兴奋? 就直接点击?编译了 ? 编译后马上报错 ? 这就对了 ....
25. 虽然报错了, 别急, 人家 QT还是给你生了个 debug 娃, 把 Hello_DLL.dll 文件拷贝进刚刚编译后生产的 debug 文件娃中
26. 还想编译? 别急 , 来到 TEST_HELLO.pro 文件下code一下
甭管什么位置了, 就在最下方 , 加入脚本路径
# C:\QT_Project\TEST_HELLO\bin\debug 这是我直接复制系统的路径格式,实际上这里需要用反斜杠才能被识别
LIBS += C:/QT_Project/TEST_HELLO/bin/debug/Hello_DLL.dll
27 . 好了, 大神们, 可以按你个 ?了, 最后点击 △运行 秀起来