什么是Lib-程序员宅基地

技术标签: 偏逻辑  C++编程  

概念

LIB有两种:

  • 一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。
  • 一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接作用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不上LIB文件。 目标模块(EXE或者DLL)文件生成之后,就用不着LIB文件了。

       静态lib文件实际上就是任意个obj文件的集合,而obj文件就是cpp文件编译之后产生的一种文件,一个cpp文件编译之后只会产生一个obj文件,而多个obj文件就可以连接生成lib文件。就像上一篇文章讲的那样,如果你工程里只有一个lib.h和lib.cpp,那么编译后产生的lib文件实际上就是lib.obj文件的一个集合,但是如果你工程里还有其他的很多个cpp文件,那么就会在编译之后生成许多obj文件,然后最终只链接生成一个lib文件。

        所以,静态lib文件实际上是包含了所有的导出声明和实现。你如果把这个lib文件链接到自己的程序之后,这个lib文件中的所有代码都会嵌入进来,哪怕你只用到了其中一部分,剩下没用到的也进了你的代码这就不难想象会造成的后果了,虽然方便,但是如果大部分你都用不到,自然会导致你的库体积没有意义地变大,失去了使用动态库的灵活性,而且发布新的版本时必须要发布新的应用程序才行,而不是简单打个补丁就好。就是因为这种缺点,才会出现动态dll调用这种方式。

      这世上所有事情的出现都是有理由的,如果静态lib能完成我们想要的功能,而没有缺点的话,就不会有第二种替代方案dll的出现!

举例

用OpenCV的开源库来举个例子看一下就知道了:

  • bin文件夹里面放的都是dll文件;
  • lib文件夹里面放的都是伴随dll文件的动态lib文件;
  • staticlib文件夹里面放的才是真正的静态lib文件,和dll文件是独立的;

参考文献

https://baike.baidu.com/item/lib/2395664

https://blog.csdn.net/m0_37876745/article/details/78323848

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013471277/article/details/82860625

智能推荐

php接口三结构,grape动态PHP结构(三)——API接口-程序员宅基地

文章浏览阅读244次。一、app视图与控制器1)路由这里的v1、v2就是模块,由于客户端版本一直在迭代的,那么一些老版本的客户端调用的接口就得保留起来,使得兼容。新版本就直接调用新接口。还有一种是写html页面,在客户端展示,只要把template文件夹和data文件夹加上就可以了。Controller的注意ismodule是true,module_ :$Init['ismodule'] = true; //开启mod...

【Python】猜拳游戏-程序员宅基地

文章浏览阅读50次。import randomc = random.randint(1, 3)x = int(input("请出拳 石头(1)/剪刀(2)/布(3): "))print("玩家选择的拳头是 %d - 电脑出的拳是 %d " % (x, c))if ((x == 1 and c == 2) or (x == 2 and c == 3) or (x == 3 and c == 1)): print("电脑弱爆了!")elif c == x: prin.

springcloud alibaba sentinel + Gateway + Nacos_spring-cloud-alibaba-sentinel-gateway-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏5次。springcloud alibaba sentinel建议:入门先看官方文档,更加准确、全面https://github.com/alibaba/Sentinel/wiki简介引用官方说明:Sentinel是阿里巴巴开源的,面向分布式服务架构的高可用防护组件,主要以流量为切入点,从流量控制、流量整形、熔断降级、系统自适应保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。使用场景在服务提供方(Service Provider)的场景下,我们需要保护服务提供方自身不被流量洪..._spring-cloud-alibaba-sentinel-gateway

基于双二阶广义积分器的软件锁相环仿真模型DSOGI-SPLL适用于并网逆变器、微电网_双二阶广义积分器(sogi)软件锁相(基于双线性变换)代码.txt-程序员宅基地

文章浏览阅读94次。适用于并网逆变器、微电网、三相VSR等应用,通过自适应滤波器的设计,实现无静差跟踪三相电压频率和相位。相关代码,程序地址:http://lanzouw.top/669235117504.html。基于双二阶广义积分器的软件锁相环仿真模型。_双二阶广义积分器(sogi)软件锁相(基于双线性变换)代码.txt

Android Vendor Test Suite (VTS) 1-程序员宅基地

文章浏览阅读7k次。安卓供应商测试套件 (VTS)VTS 由一套测试框架和测试用例组成,目的是提高安卓系统 ( 如,核心硬件抽象层HALs和库libraries ) 和底层系统软件(如,内核kernel,模块moduls,固件firmware等)的健壮性,可依赖性和依从性。VTS 主要有两种测试套件:自动化的(如,record-and-replay and fuzzing);结构化测试(如,gTest and ho

SOME/IP协议详解「2.1.7·序列化:联合体|Union/Variant」_some/ip协议详解「2.1.7·序列化:联合体|union/variant」-程序员宅基地

文章浏览阅读3.2k次。SOME/IP协议详解「2.1.7·序列化:联合体|Union/Variant」点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.1.7·序列化:联合体|Union/Variant」联合体可以说是我们使用最少的类型了,甚至有的车厂直接静止使用联合体,以确保someip通信报文的易读性;同时有些c语言规范也不提倡使用联合体,容易在使用中出问题,所以可能是我们使用中最不常见的一种形式联合体是说将一块内存的数据可以解析成不同的类型,以方便调用,而序列化的时候,只能选定其中_some/ip协议详解「2.1.7·序列化:联合体|union/variant」

随便推点

用PASS软件完成多组率的样本量计算_pass样本量计算官网-程序员宅基地

文章浏览阅读3k次。pass教程:链接:https://pan.baidu.com/s/1fn7AbMtrOJ0hWWghe7yFaA?pwd=shtd 提取码:shtd 临床上经常碰到3组或3组以上的比较,结局可能是比例或率,或定量变量,或事件。如果是率的话,如何计算样本量呢?多组率的样本量计算公式可以从两个角度来计算,整体差异比较的角度和两两比较的角度。不同的研究目的所应用的样本量计算方式不同,本篇首先从整体差异性比较的角度,以三组为例开展实例分析操作。研究设计为随机对照试验。本研究探讨的是不同强度的运动干预对产后抑郁_pass样本量计算官网

恒生电子股份有限公司--软件测试--《社招、校招jd、校招行程,招聘动态》整理-程序员宅基地

文章浏览阅读3.2k次。恒生电子股份有限公司第一目标目录社招jd校招jd附件(校招行程,招聘动态)互联网金融行业详细介绍:1995年2月,恒生电子创始团队八位年轻的工程师怀揣梦想,毅然决然投身于金融IT领域,2003年12月,恒生电子股份有限公司在上海证券交易所主板上市(代码600570),是中国领先的金融软件和网络服务供应商业务范围包括证券、基金、期货、银行、信托、保险、财资...

Python操纵Word神器——python-docx大全(含插入pptx图表)_python-docx add_chart-程序员宅基地

文章浏览阅读2.1w次,点赞91次,收藏502次。生成合同、报告等信息需要用到Word,含插入pptx图表_python-docx add_chart

RGB转到HSV和HSL公式_rgb转hsl-程序员宅基地

文章浏览阅读1.9w次,点赞3次,收藏5次。HSL 和 HSV 在数学上定义为在 RGB 空间中的颜色的 R, G 和 B 的坐标的变换。[编辑]从 RGB 到 HSL 或 HSV 的转换设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (h, s, l) 值,这_rgb转hsl

作为一个新手程序员该如何成长?_新人程序员该如何成长-程序员宅基地

文章浏览阅读4.3k次。本文将为你介绍一些有助于提升新手程序员工作能力的方法。_新人程序员该如何成长

【电机学复习笔记】第二章 变压器-程序员宅基地

文章浏览阅读3.4k次,点赞12次,收藏97次。静止的电能传递装置,利用电磁感应原理工作,把一种电压等级的交流电能转换为同频率的另一种电压等级的交流电能。