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

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可见

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

重新构建:

 可见软件是明显变大了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值