1.静态库
优点:1.链接器抽取需要的代码,不需要的代码不抽取,即使链接时加入了许多lib,只要没用到里面的函数,生成的文件中都不包含lib中的代码。如果不用lib,而是直接link *.obj,则会有多余代码(手工测试时exe大小一样,vs2019中重新生成后大小不同)。
2.一个可执行程序包含了所有代码,部署方便。
缺点:1.维护性问题,修改bug要改源代码,所有用到静态库的要重新编译链接。
2.每个程序中都有静态库中的代码,重复率高,硬盘空间占用多。
制作:控制台使用lib可制作静态库,如下所示,生成文件mod.lib
再链接,可生成exe文件
导出时,要用宏兼容C和C++:
#ifdef __cplusplus extern "C" { #endif // __cplusplus void fnStaticLib1(); void fnStaticLib2(); #ifdef __cplusplus } #endif // __cplusplus
也可以导出类,声明和实现要分开写。
用法:
#include "StaticLib1.h" #pragma comment(lib,"StaticLib1.lib")//.lib后缀可以不加
或者在vs的连接选项里手工添加
也可以导出类,声明和实现要分开写。