静态库和动态库的区别和使用

基本概念

函数库:
函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的 目标代码,以及连接过程中所需的 重定位信息。用户也可以根据自己的需要建立自己的用户函数库。
 
库函数:
存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。
 

静态库

在windows下后缀为.lib文件,在Linux下为.a文件。

编译时,需要包含接口头文件和静态库,代码会直接编译进可执行文件。好处是,运行时,不依赖静态库文件。但是编译后的文件较大,并且静态库方式改变时,所有依赖于该文件的项目都需要重新编译

动态库

动态库在windows下包含后缀为.lib和.dll文件。.lib文件是 导入库,不含代码,而是为链接程序提供信息,包含在.exe文件中建立动态链接时要用到的重定位表。

导入库用于程序开发时,动态库用于程序运行时。

动态库分为显式调用和隐式调用:

隐式调用

编译时,包括导入库以及接口头文件。运行时,需要包含动态库,否则会报错。隐式调用编码简单,但是启动时所有动态库会加载到内存中,会浪费资源。

显式调用

编译时,不需要导入库和接口文件。运行时,只有需要的时候,才会加载动态库,因此更灵活。

在Linux需要用到

dlopen()、dlsym()、dlclose()三个函数

在windows下需要用到

LoadLibrary、GetProcAddress、FreeLibrary三个函数加载动态库

参考:

https://www.cnblogs.com/westsoft/p/5936092.html

https://blog.csdn.net/star_xiong/article/details/17301191

猜你喜欢

转载自www.cnblogs.com/liuxianglei/p/9000326.html
今日推荐