lib 文件(基础)

本文详细介绍了静态库(.lib)和动态库的区别及使用方法。静态库在编译时会被嵌入到程序中,增大程序体积但无需运行时依赖;动态库(DLL)在运行时加载,减小程序大小,便于更新。调用静态库需要.h头文件和.lib文件,而动态库则需要.lib和.dll文件。动态库提供了更灵活的更新方式,只需更新DLL和相应动态库即可。
摘要由CSDN通过智能技术生成

0x00 前言

​ 本文主要是参考:在自己的项目中调用别人的库的方法(static lib库,dynamic lib库以及dll动态库)_邓无邪的博客-CSDN博客 写下来的

0x01 lib 简介

​ lib 文件也是一种类似于 DLL 的库文件,常称之为静态链接库文件,而 lib 又有两种:静态 lib 和动态 lib。

0x02 静态 lib

​ 静态 lib (static Library)是任意个 obj 文件的打包,它包含了所有导出声明和实现,lib 文件被链接到程序后就会将整个 lib 文件嵌进程序代码中,此后 exe 的运行不再需要 lib 了。

​ 虽然这大大增加了程序的体积。所以对于一个程序而言,如果只需要完程编译,有静态 lib 文件即可(理论上)。

0x03 动态 lib

​ 动态 lib ,也称导入库(Import Libary),与 DLL 的存在相关。对于我们想链接 DLL 文件有两种方式:

  • 直接使用 LoadLibary ,前提是知道函数地址位置
  • 使用导入库 lib 文件

​ 动态 lib 文件其实与静态 lib 文件并不相同,静态 lib 包含了实际代码等等,而动态 lib 中只含有地址符号表来帮助程序找到响应函数。

所以动态 lib 就是对于 DLL 的一个使用方式补充,方便了人们的使用 DLL ,方便了软件的更新(只需要更新 DLL 和相应的动态 lib 即可,不用更新软件代码)。

0x04 lib 的调用

一、静态 lib

​ 静态 lib 库的调用需要用到以下文件:

  • .h文件
    • 包含函数的声明,数据结构等东西,在调用lib的时候,需要把该头文件包含进你的代码
  • .lib文件
    • 包含具体的实现

​ 在源代码中需要使用以下代码导入静态 lib 文件

#include "..\lib.h"
#pragma comment(lib,"文件地址如:./test.lib") //指定与静态库一起链接
//也可以在VS中的附加处添加,而不使用第二段代码,文章中有讲添加方法

更加详细的静态 lib 编写和调用讲解可以看以下博客:VS2010/2013下生成并使用静态库_邓无邪的博客-CSDN博客_vs 生成静态库

二、动态 lib

​ 在我们调用 DLL 库是就会涉及到我们的动态 lib 文件了,涉及到以下文件:

  • .h文件
    • 如上,同样需要包含到你的代码
  • .lib文件
    • 包含一些函数的入口和具体位置,必须在编译阶段引入这个文件,否则会报错。(如果没有这个动态lib文件或者不想用lib文件,需要用Win32的API函数LoadLibrary和GetProcAddress来装载)
  • .dll文件
    • 实际的实现,在程序运行时动态调用

介绍的直接一些的相关的 DLL 编写和调用可以看:VS下静态库与动态库的生成与使用_Neverland_LY‘s Domain-CSDN博客 的动态库部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值