当前位置: 首页 > news >正文

垂直+网站开发湖南株洲疫情最新情况

垂直+网站开发,湖南株洲疫情最新情况,网站搭建入门,平台设计标准写在前面 在Qt的实际开发中,免不了使用和创建动态链接库,因此熟悉Qt中动态链接库的创建和使用对后续的库开发或使用是非常用必要的。 在之前的文章https://blog.csdn.net/SNAKEpc12138/article/details/126189926?spm1001.2014.3001.5501中已经对导入…

写在前面

在Qt的实际开发中,免不了使用和创建动态链接库,因此熟悉Qt中动态链接库的创建和使用对后续的库开发或使用是非常用必要的。

在之前的文章https://blog.csdn.net/SNAKEpc12138/article/details/126189926?spm=1001.2014.3001.5501中已经对导入导出的声明有过详细介绍了,通过Qt向导创建的动态库项目也会带上这些声明,因此这里不再赘述。

开发环境;
Qt:5.15.2
Qt Creator:10.0.2

动态链接库的创建

打开Qt Creator,创建项目 -> 选择 库 -> C++ Library
1
自定义项目名称和存放路径:
2
默认使用qmake构建:
3
库类型默认:
4
无需翻译文件:
5

选择构建套件,这里使用Qt 5.15.2 MSVC2019_64bit
6
最后的总览;
7
生成后可以看到向导自动生成了如下文件:
8

.pro文件内容如下;
9
qtdlltest.h头文件中定义了导出类信息,内容如下;
10
QtDllTest_global.h头文件主要通过上面.pro文件中定义的QTDLLTEST_LIBRARY宏,来区别导入和导出声明:
11

最后是导出类的实现:
12
编译运行可以在生成路径下生成了一个dll:
13

这里添加一个成员函数,以便后面使用:

14
15
重新生成,同样可以使用dumpbin工具查看导出信息:

如何配置使用VS提供的dumpbin工具可参考:https://blog.csdn.net/SNAKEpc12138/article/details/126109249?spm=1001.2014.3001.5501

16

虽然发生了名字改编,也不影响我们在Qt项目中使用,可参考:https://blog.csdn.net/SNAKEpc12138/article/details/126235303?spm=1001.2014.3001.5501

动态链接库的使用

在其他项目中使用Qt动态链接库,需用到以下文件:
①导入/导出声明全局文件。例上面的:QtDllTest_global.h,若未使用全局文件,则无需。
②导出声明头文件。例上面的:qtdlltest.h
③lib 和 dll。例生成目录下的:QtDllTest.lib 和 QtDllTest.dll

下面再创建一个新的项目来使用上面生成dll, 这里使用一个简单Qt控制台程序示例。

首先将需要的文件拷贝到使用项目的目录下,头文件和.lib文件可需防止.pro文件所在目录下(因为要在代码中引用),.dll文件放在生成目录下。

这里习惯将头文件放在.pro目录下的include文件夹中,将.lib文件放在.pro目录下的lib文件夹中:
17
将.dll文件放在项目的生成目录下,不知道项目的生成目录,可在Qt Creator左侧的项目界面中查看:
18
19

文件放置妥当后,即可开始使用动态链接库了,这里也可分为静态加载和动态加载两种方式。

静态加载

在使用项目的.pro文件中添加附加库目录和导入.lib :
20
补充:$$PWD为.pro文件所在目录。

在代码中使用:
21

注意:上面.pro文件中的LIBS += $$PWD/lib/QtDllTest,有的版本无需加上.lib后缀,而有些版本则需要加上.lib后缀。

当出现以下报错(**LNK1181: 无法打开输入文件: ***\库名称.obj)时,则需要加上.lib后缀:
22

动态加载

因为动态加载只能调用动态库的导出函数,而且必须是extern"C"的,调用不了类,因此这里需要重新在dll项目中添加一个全局函数:
23
24

重新生成后更新qtdlltest.h、QtDllTest.lib、QtDllTest.dll到使用项目中!

然后即可在使用项目中动态加载:

#include <QCoreApplication>
//#include "qtdlltest.h"#include <QLibrary>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//    QtDllTest dll;
//    dll.printFromDll();QLibrary lib("QtDllTest.dll");if (!lib.load()){qDebug() << "Failed to Load Library!";qDebug() << lib.errorString();return 0;}typedef void (*pFunc)();pFunc f = lib.resolve("globalPrint");if (f){f();}else{qDebug() << "Failed to get function!";}return a.exec();
}

输出如下:
25

总结

综上,简单介绍了Qt动态链接库的创建和使用,使用时也分别示例的静态加载和动态加载的区别。

需要注意的是:
①静态加载添加.lib文件时,因Qt版本不同,可能需要加上.lib后缀。
②动态加载时,只能加载extern"C"的全局函数,不能加载类,因此在Qt中,一般不会使用这种加载方式。

若想使用动态加载,且用到导出类时,Qt中提供了QPluginLoader插件类来实现,这个会在之后的文章中详细介绍。

http://www.laogonggong.com/news/22858.html

相关文章:

  • 济宁网站建设有限公司网络营销组织的概念
  • 一品威客网站是什么做的营销推广怎么做
  • 网站制作网站开发新手20种引流推广方法
  • 在电脑制作手机网站用什么软件今日热点新闻事件2021
  • 婚纱网网站建设目的及功能定位google play下载安装
  • 廊坊文安建设局网站百度搜索工具
  • 作品展示网站源码企业网络营销推广方案策划
  • 青岛百度公司总部广西网络优化seo
  • 中企动力做的网站后台怎么登陆八戒
  • 中山网站搜索排名seo排名需要多少钱
  • 优秀设计案例作品百度快照优化推广
  • 怎样用dw做新闻发布网站账号权重查询
  • 广州网站建设V芯ee8888e网络推广公司运作
  • 河北一级造价师网络推广的调整和优化
  • django 做网站赚钱大连网络推广
  • 程序员做图网站西安网站制作
  • 专业做网站制作的公司营销页面设计
  • 广东企业微信网站建设泉州seo按天收费
  • 0基础怎么做网站模版网络违法犯罪举报网站
  • 白熊阅读做网站架构宁波seo优化
  • 哪些网站做国际贸易比较好网络营销课程
  • 长安镇仿做网站外贸网站
  • 武汉网站排名推广十堰seo排名公司
  • 凡科网可以自己做网站吗营销方法
  • 定海网长沙seo优化排名推广
  • 做网站能用自己电脑吗英文seo外链
  • 建立企业网站的详细步骤友情链接怎么购买
  • 广州做网站mxszpt怎样制作一个自己的网站
  • 免费咨询个税广州网站优化公司如何
  • 做自由行的网站好怎么查询搜索关键词