【Qt专栏】Qt创建和调用动态链接库


提示:Qt版本为Qt5.9.6

一、创建动态链接库

  1. 单击“文件”后,单击“新建文件项目”菜单项。
    转载请注明来源
  2. 选择“Library”后选择“C++库”,然后点击“选择”。
    转载请注明来源
  3. 类型选择“共享库”,名称自定义,路径自己选择,完成以上后点击“下一步”。
    转载请注明来源
  4. 这里编译工具我选择默认,点击“下一步”。Qt MinGW与MSVC对比
    转载请注明来源
  5. 默认选择“QtCore”模块,然后点击“下一步”。
    转载请注明来源
  6. 类名默认会和DLL的名称一致,可自行修改,点击“下一步”。
    转载请注明来源
  7. 版本控制系统默认是“None”,这里有“Git”项是我电脑上安装了Git,点击“完成”。
    转载请注明来源
  8. 点击最左侧“项目”项,在“编译构建配置”处把相应的“Shadow build”勾去掉,这样构建目录会生成在当前DLL的目录下。
    转载请注明来源
  9. 创建完成后会自动生成以下文件。

一个共享库导出给用户使用的类,符号,函数等都需要用宏 Q_DECL_EXPORT 来定义导出,一个使用共享库的应用程序需要通过 Q_DECL_IMPORT 导入共享库的可用对象。
转载请注明来源

  1. 自行添加接口,这里我接口添加如下,编译工具使用MINGW 32bit,release模式下进行编译。

1:若使用MSVC编译,编译后会生成“库名称.dll”和“库名称.lib”两个文件,“库名称.dll”在运行应用程序时调用,“库名称.lib”在应用程序隐式调用DLL时使用。
2:若使用MinGW编译,编译后会生成“库名称.dll”和“lib+库名称.a”两个文件,“库名称.dll”在运行应用程序时调用,“lib+库名称.a”在应用程序隐式调用DLL时使用
转载请注明来源描述

  1. 按“ctrl+r”键后出现如下图,恭喜你,一个简单的DLL创建成功了。
    转载请注明来源

二、调用动态链接库

调用方式一(推荐使用)

  1. 新建一个项目后,在项目所在目录下新建一个 lib 目录,将上述生成的库和头文件添加到 lib 目录下,如下图。
    在这里插入图片描述
  2. 回到QtCreator创建的项目中,点击最右侧的项目一栏,然后在构建设置下去掉 “Shadow build” 的勾选项,让exe生成到当前项目的路径下。
    在这里插入图片描述
  3. 在 “项目名称.pro” 文件中,指定库路径(注意在LIBS一行,记得在库名称“Calculator”前加-l)
    在这里插入图片描述

调用方式二

  1. 新建一个项目,右击项目名称后,选择“添加库”项。
    转载请注明来源
  2. 勾选“外部库”,点击“下一步”。
    转载请注明来源
  3. 库文件选择“浏览”,找到你创建的动态链接库位置。转载请注明来源
    这里为我的DLL文件位置,仅供参考转载请注明来源
  4. 点击“完成”。
    转载请注明来源
  5. 点击“项目名称.pro”文件,会自动添加如下内容。转载请注明来源
  6. 添加库里的头文件,右击项目“执行qmake”和“构建”,“ctrl+r”运行项目后,会出现如下错误。
    转载请注明来源
    解决:在“项目名称.pro”文件里,按如下图操作,因为包含的头文件不在release目录下。
    转载请注明来源
  7. 测试上面的动态链接库操作如下视频所示,仅供参考哈。


  • 9
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

拉伊卜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值