qt 动态库的创建和使用教程(step by step)

本文详细介绍了在Qt环境中创建多子目录项目,然后逐步构建动态链接库的过程,包括设置库的类型、Qt模块和编译工具。接着,讲解了如何编辑链接库内容,以及在新的应用工程中链接并调用这些库函数的方法,强调了DESTDIR的重要性,确保运行时能找到动态链接库。
摘要由CSDN通过智能技术生成

一般大型项目中, 会将实现特定功能的函数或类, 封装成链接库, 供应用程序代码调用. 下面我将一步步教你如何在qt 中创建动态库, 并使用它.

创建多子目录项目

  • 首先创建一个多子目录项目(即含有多个项目的工程, 类似于VS中的解决方案)
    在这里插入图片描述- 输入项目名称, 选择创建路径. 比如"demo".

在这里插入图片描述

  • 选择编译工具, 这里MSVC, MinGW 均可.

在这里插入图片描述- 完成&添加子项目.
在这里插入图片描述

创建动态链接库

  • 选择 “Library” | “C++ Library”.
    在这里插入图片描述- 输入库的名称.
    在这里插入图片描述- 选择 “qmake”.

在这里插入图片描述- 类型设置为共享库, "Qt module"根据库的功能设置为Core, Widget, 或其他.
在这里插入图片描述- 编译工具选择, 所有的子项目均选择相同的编译工具.

在这里插入图片描述- 完成即可.
在这里插入图片描述

编辑链接库内容

  • 打开 “mydll.pro”, 添加内容: DESTDIR = ../(指定目标文件的输出位置)
    在这里插入图片描述
  • "mydll.h"的类声明中添加函数声明.
    在这里插入图片描述
  • 在"mydll.cpp"中添加函数的定义.
    在这里插入图片描述

创建应用工程并连接动态链接库

  • 在顶层项目"demo"上右键选择 添加新子项目.
    在这里插入图片描述
  • 选择: “Application(Qt)” -> “Qt Widgets Application”
    在这里插入图片描述- 输入子项目名称, 比如:“app”
    在这里插入图片描述
  • 选择构建系统为:“qmake”
    在这里插入图片描述
    在这里插入图片描述选择编译工具, 所有的子项目均选择相同的编译工具.
    在这里插入图片描述- 完成.
    在这里插入图片描述- 打开"app.pro", 添加内容:
LIBS += ../mydll.lib

DESTDIR = ../

LIBS 指定要链接的库名称, 因为在"mydll.pro"中指定了目标文件路径为"…/“, 所以, 库名称为”…/mydll.lib"

在这里插入图片描述

  • 编辑"mainwindow.cpp", 添加如下内容, 调用动态链接库中的函数.
    在这里插入图片描述
  • 构建项目.

在这里插入图片描述

  • 如果能够构建成功, 动态库的创建和使用应该是没问题的.
  • 接下来, 运行我们的工程. 在应用程序输出窗口, 可以看到打印信息.

在这里插入图片描述
注意: 修改DESTDIR很重要, 将所有链接库的和应用程序输出的目标文件都指定到"…/", 这样运行应用程序时就不会出现找不到动态链接库的情况.

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Linux中,Qt Creator是一个强大的集成开发环境,用于开发跨平台的应用程序。在使用Qt Creator创建和调用动态库时,需要经过以下几个步骤: 1. 首先,在Qt Creator中新建一个工程。选择“Dynamic Library”作为项目类型。 2. 在工程文件中,定义需要暴露给其他程序使用的函数和类。可以在.h头文件中声明函数和类的接口,并在.cpp源文件中实现相应的功能。 3. 编译生成动态库文件。在Qt Creator中,可以点击“构建”按钮编译和链接生成动态库文件。生成动态库文件一般以.so(shared object)为扩展名。 4. 创建一个新的可执行程序项目,并引用该动态库。在新的项目中,需要在.pro文件中添加对动态库的依赖关系。例如,可以使用LIBS += -L/path/to/library -lmylibrary来指定动态库的路径和名称。 5. 在可执行程序中调用动态库中的函数或类。在主函数或其他需要使用动态库的地方,可以直接调用动态库中定义的函数或类,实现相应的功能。 值得注意的是,动态库的调用中还需要注意以下几点: 1. 在调用动态库函数时,需要先加载动态库。可以使用dlopen函数加载动态库文件,并使用dlsym函数获取需要调用的函数指针。 2. 调用动态库中的函数时,需要根据函数的参数类型进行适当的类型转换。因为动态库函数的参数类型可能与调用者的类型不完全匹配。 3. 在完成动态库的使用后,需要使用dlclose函数关闭对动态库的引用,释放相关资源。 总结来说,使用Qt Creator在Linux中创建和调用动态库需要进行项目的设置、编译生成动态库文件,然后在其他项目中引用动态库并调用其中定义的函数或类。同时,还需要注意动态库的加载和关闭过程,以确保正确使用动态库功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

falwat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值