01. 靜態庫
阿新 • • 發佈:2020-07-18
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的連線選項裡手工新增
也可以匯出類,宣告和實現要分開寫。