1. 为什么要使用静态库
当你愿意让别人使用你的代码,但又不想将源代码公开的时候,你就可以选择只暴露函数的声明部分,而将定义部分进行隐藏。使用者也只需要在使用的时候通过引用声明,明白函数的使用方法,而不需要了解内部的实现结构,并导入静态库,就可以直接进行使用。
每个编译器厂商会根据C语言标准完成各种函数的实现供我们使用,比如微软开发的VS编译器,每当使用输入输出函数时,都要包含<stdio.h>
头文件,但具体的输入输出函数,如scanf
,printf
,它们的具体实现,不会直接暴露出来,而是以静态库的形式存在。虽然有些函数提供了参考代码,但也不一定是最终实现所用的源代码。
2. 静态库的生成
假如有人在开发过程中实现了一个加法模块(add)供别人使用
2. 生成add.lib文件
3. 将.lib文件和.h文件交给使用者,添加到对应目录下
3. 静态库的使用
使用者包含头文件,导入静态库,就可以正常使用了
那有人要问什么VS定义库函数的使用不需要导入静态库呢?
因为VS编译器在我们包含这些库函数的时候,已经自动将静态库进行导入,不需要我们额外的操作。但对于其他的一些模块,还是需要自己手动导入的。