windows下qt使用第三方库(静态链接库lib)、静态库和动态库区别、动态库的使用。

系列文章目录

这里主要是讲述windows下qt使用第三方库。



前言

windows下qt使用第三方库(静态链接库lib)。

为了能够使测试更准确,首先自己用qt创建了一个已经封装好的lib库。
然后让另一个项目去链接这个lib静态库,并且去调用里面的方法。


一、准备工作

目的:
使untitled项目能够使用myllplib.lib静态库,这样untitled项目就可以使用myllplib.lib库里面的函数。

myllplib项目:
这里只写了一个void show()方法,用来测试untitled项目是否能够成功调用show()函数,如图:
在这里插入图片描述
在这里插入图片描述

二、链接lib静态库

把生成的myllplib.lib库还有需要用到的函数头文件myllplib.h,放到untitled项目下的include目录下。

这里库和头文件路径不唯一,但是要保证untitled项目能够识别到其路径位置,我放的的untitled项目中的include路径下。

1. 配置

1. 添加库
在这里插入图片描述
2. 外部库
在这里插入图片描述
在这里插入图片描述

3. 完成设置
在这里插入图片描述
4. 自动更新untitled.pro文件
在这里插入图片描述

这里要把库对应的头文件路径设置到INCLUDEPATH能够识别的到地方。就是myllplib.h头文件的路径位置。我放的是include目录

2.测试

添加头文件#include "myllplib.h"、并调用myllplib.lib里面的函数
在这里插入图片描述

在这里插入图片描述
总结:
把第三方lib库、头文件,放到指定的路径中(我这里是全部放到了untitle项目的include目录下),要保证untitled项目能够找到lib库和头文件。


三、静态库和动态库区别

3.1 静态库和动态库的基本概念

静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生 成的可执行文件较大。
动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库 文件支持,如果机器里没有这些库文件就不能运行。

3.2 如何使用动态库

如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。

  1. linux的可执行程序在执行的时候默认是先搜索/lib/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。
  2. 同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的 其他路径:

如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本添加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找(详细参考《使 用 LD_LIBRARY_PATH》)。

不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。(LD_LIBRARY_PATH 的缺陷和使用准则,可以参考《Why LD_LIBRARY_PATH is bad》 )。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路 径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。

3.3 库的链接时路径和运行时路径

现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。比如我们做嵌入式 移植时#arm-linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是交叉编译好的zlib库),将target编译好后我们只要把zlib库拷贝到开发板的系统默认路径下即可。或者通过- rpath(或-R )、LD_LIBRARY_PATH指定查找路径。

共享库原文链接

  • 33
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暴躁茹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值