动态库和静态库的新理解

本文揭示了静态链接库与动态链接库的区别,包括静态库包含完整源码、动态库只含部分信息的特性,以及导入库的作用。同时介绍了隐式链接和显示链接调用动态库的方法,以及软件为何倾向于使用DLL而非直接使用lib的常见原因。
摘要由CSDN通过智能技术生成

旧理解(当初理解较浅,今再看到有新发现)

链接:

静态链接库和动态链接库区别_动态链接库和静态链接库的区别-CSDN博客

 由于本人不是做架构方面,给大佬打螺丝。长时间的惯性思维就是要使用其他项目的类或者函数,先导出成dll。然后那个项目附加依赖项添加lib。

重点:

1.lib后缀不单是叫静态库,还有另一个叫导入库。静态库和导入库是两个概念,一个是传统意义上的静态库,另一个是配合dll使用的导入库。(这个非常重要)

2.一个项目要引用另一个项目可以直接使用lib库,并不需要导出,但需要类的头文件。然后在附加依赖项添加lib。或者在使用的文件添加如下方法。

 

3.而使用动态库有两种方法:隐式链接调用显示链接调用

 隐式链接调用:就是平常打螺丝惯用的方法。导出要调用的类和函数,然后在要使用的项目附加依赖性,再附加上那些类和函数的头文件位置。

显示链接调用:平常非常少使用的方法。一般调用非C++语言编写生成的dll。要使用的话,需要在程序声明函数原型,解析dll里面的函数。

4.为什么要调用dll,不直接使用lib。(更新dll容易,这是很多软件惯用手法,这个老生常谈)

先看看下面的说法:

 

 

总结就是:

1.静态库中包含的是全部的源码信息,而动态库dll里面包含的是所需要的部分源码信息。而它提供的导入库lib只是做索引的符号信息(所占大小远小于静态库)。两种lib包含的信息不一样。

 2.静态库是将被调用的函数和数据复制一份到所使用的模块,而动态库只需要实现一次就行。比如两个模块使用了静态库里面的函数,这两个模块都需要复制两份内容到使用的模块内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值