参考网址: https://blog.csdn.net/q496713258/article/details/6990837

qt 的学习网址: http://c.biancheng.net/view/1792.html

一、建立并生成动态链接库

 
  1. 1

    我们首先在磁盘的某个位置建立一个名为DllDemo的文件夹。

    打开QtCreator,新建工程,我们选择Library,C++库,然后就是choose。

  2. 2

    然后在弹出的C++库对话框我们默认类型共享库,名称为MyDll。路径就是我们刚才建立的DllDemo文件夹。然后,一直下一步,直到点击完成。

  3.  

    我们来看看程序结构,以及pro文件内容。

    我可以看到系统自动生成了一个mydll_global.h的文件。

    pro内也自动生成了一些内容。可以看到TEMPLATE = lib,而不是我平时的TEMPLATE = app。

  4.  

    再来看看mydll_global.h的内容。

    可以看到系统自动定义了两个宏。用于声明哪些函数是需要我们导出的。

  5.  

    下面我们来给我们的代码添加点内容,以便于我们待会使用。

    首先我们在mydll.h中添加几行代码,如下图。

    注意:extern "C" MYDLLSHARED_EXPORT必须要有。

  6.  

    再来看看mydll.cpp中的实现代码,都比较简单。

  7.  

    代码编写完毕后,我们直接构建就行了。然后就可以看到我们生成的dll了。

    END

二、测试生成的DLL

 
  1.  

    新建一个基于Qt的控制台应用程序,名称为DllTest。依然放置在我们的DllDemo的目录下。

  2.  

    建好了以后,就可以在main.cpp写代码了。我们通过QLibrary类来加载dll。

    因为要获得类对象的实例,所以我们需要将mydll.h包含进来。

    要注意的是,我没有对函数是否成功获取做检测。

    来看看我们的代码:

  3.  

    代码写完后就可以构建程序了。不过要运行程序,我们还需要将刚才生成的dll拷贝到程序的同级目录。

  4.  

    在IDE中运行程序,因为我生成的是debug版的程序,相关的环境变量未设置,无法独立运行。

    可以看到我们的dll工作的很好,程序运行正常。

    END

三、善用Assistant

 
  1.  

    最后我们来看看Assistant中关于QLibrary的描述。比较费解的是,Assistant中并没有对创建共享库做详细的说明,估计是这个太简单或资料太多了吧。

     
     

    QT 中动态连接库的使用。

    Pro 中的的修改

    INCLUDEPATH +=./lib

    LIBS += ./lib/

    其中的

    INCLUDEPATH  表示头文件的目录.

    LIBS   表示动态文件dll的目录.

     
     
     
     

最新文章

  1. 浅谈 jQuery 事件源码定位问题
  2. ie8的兼容
  3. android: 活动和服务进行通信
  4. IE11新文档模式Edge介绍与评估,及在WebBrowser应用中的使用。
  5. Spring的核心机制——依赖注入(Dependency Inject)
  6. oracle rac 日志体系结构!
  7. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
  8. (转)RabbitMQ 集群与高可用配置
  9. UNIX基础知识之输入和输出
  10. wifidog编译到openwrt
  11. C#中5中timer的比较
  12. ValidateCode.cs验证码时设置缓存的使用
  13. [转载]memcached stats 命令
  14. 2017年Web前端开发工程师薪资越来越高?
  15. JavaScript表单验证和正则表达式
  16. 一:配置使用阿里云Maven库
  17. 【Android】[Problem]-"Waiting for target device to come online".
  18. [Scala] 实现 NDCG
  19. alpha冲刺第五天
  20. java Graphics2D drawString()内容换行问题

热门文章

  1. python pyinsane应用
  2. 详解Lombok中的@Builder用法
  3. C++之vector容器
  4. POJ3268-最短路径-反向存边
  5. java跨平台性说明
  6. Gitlab-500错误的恢复
  7. 数据结构与算法-排序(二)选择排序(Selection Sort)
  8. WebRTC 用例和性能
  9. 解决移动端在IOS中input输入框光标过长
  10. Unix 网络IO模型介绍