基本概念
函数库:
库函数:
存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。
静态库
在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