QT 下共享库(静态库和动态库)的使用

article/2023/6/4 14:51:04

1.共享库介绍

1. 1静态函数库

1.1.1 库名称

window下格式为: *.a
linux下格式为: *.a

1.1.2 特点

链接时被整合入目标代码。

1.1.3 优点

软件运行不再依赖外部库的支持,可以独立运行。

1.1.4 缺点

编译后生成的exe包含了整个库,所以体积比较大,而且由于是整个整合入代码,所以如果有改动需要重新编译软件。

1.2 动态函数库

1.2.1 库名称

window下格式为: *.dll
linux下格式为: *.so

1.2.2 特点

程序运行时再去库里寻找函数。

1.2.3 优点

生成的exe不受共享库的影响,改变库函数的时候不需要重新编译软件,只需要替换dll即可,方便库的更新升级。

1.2.4 缺点

软件需要依赖库,安装目录会比较冗余,可能会出现奇怪的环境问题或者版本问题 。

2.QT生成共享库

2.1生成静态链接库

 点开.pro文件

 

 关键配置:CONFIG += staticlib 表示只需要生成静态库

                TEMPLATE 生成目标是共享库

 

生成.a静态库 (静态库实际上就是.o文件的集合)

2.2生成动态链接库

 点开.pro文件

关键配置: TEMPLATE 生成目标是共享库

 构建工程。

 生成动态库.dll 可以看到此处也有.a 不过很明显这个.a不是上面那种静态库(太小了),实际上它是这个.dll的索引文件,在VS下应该是一个.lib的文件,它只包含了库中的索引,比如类或者函数,而实际的实现则在dll中。

3.QT使用共享库

 3.1 未引用状态

 此时为没有引用任何共享库的状态,生成exe

 3.1引用动态链接库

 

注意这个.a不是静态链接库,而是动态链接库的索引

 转到pro可见

 (关于pro参数问题后续单独出再出文章分析)

可见已经引用了libShared

代码里也引用一下。重新构建 

 可见没有明显变大

3.2 引用静态链接库

  转到pro可见

 生成的配置信息其实是一样,下面那几行是可以删掉的。

重新构建:

 可见软件是明显变大了。

http://www.ngui.cc/article/show-1020456.html

相关文章

如何注册Shopify商店

Shopify Shopify 是一个流行的电子商务平台,旨在帮助用户创建、运营和增长自己的在线商店。通过 Shopify,用户可以轻松地创建一个美观、易于使用的在线商店,展示和销售自己的商品或服务,并管理订单、运输、支付和营销活动等业务。…

Linux 网络驱动实验(有线)

目录嵌入式网络简介嵌入式下的网络硬件接口MII/RMII 接口MDIO 接口RJ45 接口网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常 常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来…

基于SSM+JSP实现的流浪猫狗救助系统(分为用户端和管理员端,领养动物、流浪动物知识学习、用户管理、评论管理、领养记录查询、流浪猫狗管理等)

博客目录基于SSMJSP实现的流浪猫狗救助系统实现功能截图系统功能使用技术完整源码基于SSMJSP实现的流浪猫狗救助系统 本系统是一个流浪猫狗救助系统,分为用户端和管理员端,用户端可以完成登陆注册、流浪猫狗知识学习、领养动物,管理员端可以…

Synchronized和锁升级

文章目录1、Synchronized关键字2、无锁3、偏向锁3.1、是什么3.2、核心原理3.3、加载过程3.4、偏向锁的膨胀和撤销4、轻量级锁4.1、是什么4.2、核心原理4.3、轻量级锁的膨胀5、重量级锁5.1、是什么5.2、核心原理锁升级发生后,hashcode去哪啦锁指向6、锁消除7、锁粗化…

3.29面试题

文章目录内存内存管理执行过程要点面试题内存 内存管理 由JVM管理 堆:new出来的对象(包括成员变量、数组元素、方法的地址)栈:局部变量(包括方法的参数)方法区:.class字节码文件(…

c# 第一次作业

一. 单选题(共49题,93.1分) 1. (单选题)下面属于合法变量名的是_____________。 A. P_qrB. 123mnpC. BooleanD. X-Y 我的答案: A正确答案: A 1.9分 2. (单选题)用所有.NET支持的编程语言编写的源代码经过一次编译后被编译成_____________…

ESP8266WiFi模块与Android APP实现数据传输(三)---AT/MQTT固件下载

目录 (1)打开后选择ESP8266 DowmloadTool (2)在弹出的界面进行下面操作: (3)进入等待上电同步: (4)状态显示完成,表示下载结束 (5&…

ChatGPT 使用 拓展资料:大模型训练为什么这么难

ChatGPT 使用 拓展资料:大模型训练为什么这么难 一些LLMs的省内存方法 https://zhuanlan.zhihu.com/p/616858352

用于模拟原子相互作用的continuous-filter卷积NeurIPS2017

深度学习有可能彻底改变量子化学,因为它非常适合学习结构化数据的表示。虽然卷积神经网络已被证明是图像、音频和视频数据的首选,但分子中的原子并不局限于网格结构(grid)。相反,它们的精确位置包含了基本的物理信息&a…

vue 遮罩和ref的使用,setup版和非setup版

1、创建conform.vue&#xff0c;其内容如下&#xff1a; <template><div v-if"fade"><div class"xtx-confirm" :class"{fade}"><div class"wrapper" :class"{fade}"><div class"header&qu…