参考网址: 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的目录.

     
     
     
     

怎样在Qt中建立使用动态链接库的更多相关文章

  1. qt中建立图片资源文件

    qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...

  2. QT中加载动态链接库

    一.添加第三方的头文件 这个问题再简单不过了,不过我还是要说下. 首先,添加头文件  #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下,就OK了 ...

  3. qt中设置窗口左上角的图标

    前面一节已经详细的讲解了怎么添加图片到qt的图片资源文件中,这里就不赘述了,不太了解的可以看看博主的这篇随笔:qt中建立图片资源管理文件 this->setWindowIcon(QIcon(&q ...

  4. 使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)

    导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有 ...

  5. 深度解析 Qt 中动态链接库

    本文介绍的是Qt 中动态链接库,现在有些软件有自动升级功能,有些就是下载新的DLL文件,替换原来的动态链接库,MFC好象也有类似机制,Qt还有一种方式,就是把一个QWidget子类,编译成动态链接库. ...

  6. 使用Boost的DLL库管理动态链接库(类似于Qt中的QLibrary)

    Boost 1.61新增了一个DLL库,跟Qt中的QLibrary类似,提供了跨平台的动态库链接库加载.调用等功能.http://www.boost.org/users/history/version ...

  7. Windows平台下Qt中glut库的使用

    用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是说“glutSolidSphere”: 找不到标识符 ...

  8. QT中使用Glut库

    用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是说“glutSolidSphere”: 找不到标识符 ...

  9. (转载)QT中PRO文件写法的详细介绍,很有用,很重要!

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释从“#”开始,到 ...

随机推荐

  1. 【动画消消乐】HTML+CSS 自定义加载动画 062

    效果展示 Demo代码 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  2. SLAM的数学基础(1):什么是方差,有什么意义?

    小红班上有两组同学的数学考试分数为: 第一组:小红:100分,小明:60分,小宇:20分 第二组:小蓝:70分,小华:60分,小杰:50分 那么很容易算出,第一组的平均分是60分,第二组的平均分也是6 ...

  3. 10、Java——内部类

    ​  1.类中定义类 (1)当一类中的成员,作为另外一种事物的时候,这个成员就可以定义为内部类. (2)分类:①成员内部类 ②静态内部类 ③私有内部类 ④局部内部类 ⑤匿名内部类 ⑥Lambda表达式 ...

  4. sql select 1 和 exists

    SELECT * FROM LACOMMISION WHERE MANAGECOM LIKE'8694%' AND STATE='1' AND EXISTS(SELECT 1 FROM laagent ...

  5. Go通关03:控制结构,if、for、switch逻辑语句

    if 条件语句 func main() { i:=6 if i >10 { fmt.Println("i>10") } else if i>5 && ...

  6. SaltStack 任意文件读写漏洞(CVE-2020-11652)

    漏洞影响 SaltStack < 2019.2.4 SaltStack < 3000.2 同CVE-2020-11651 poc git clone https://github.com/ ...

  7. SpringBoot整合Guacamole教程

    前言 本文主要介绍的是SpringBoot如何整合Guacamole在浏览器是远程桌面的访问. Guacamole 介绍 Apache Guacamole 是一个无客户端远程桌面网关.它支持标准协议, ...

  8. Nginx 配置错误导致漏洞

    目录 1.CRLF注入漏洞 2.目录穿越漏洞 参考链接 1.CRLF注入漏洞 CRLF是"回车+换行"(\r\n)的简称,其十六进制编码分别为0x0d和0x0a.先看payload ...

  9. WPS函数

    vlookup函数:=VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 官方解释:其逻辑为在某一区间内搜索区间外某一单元格的值, ...

  10. git的实用命令(撤回,合并)

    前言 在用开发项目的时候,经常会写着写着会发现写错的时候,人生没有后悔药,但是git有啊,大不了从头再来嘛. git的一些撤销操作 代码还没有存到暂存区 当我们修改了一个文件,还没有执行git add ...