1. 程式人生 > 實用技巧 >01. 靜態庫

01. 靜態庫

1.靜態庫

優點:1.連結器抽取需要的程式碼,不需要的程式碼不抽取,即使連結時加入了許多lib,只要沒用到裡面的函式,生成的檔案中都不包含lib中的程式碼。如果不用lib,而是直接link *.obj,則會有多餘程式碼(手工測試時exe大小一樣,vs2019中重新生成後大小不同)

    2.一個可執行程式包含了所有程式碼,部署方便。

缺點:1.維護性問題,修改bug要改原始碼,所有用到靜態庫的要重新編譯連結。

    2.每個程式中都有靜態庫中的程式碼,重複率高,硬碟空間佔用多。

製作:控制檯使用lib可製作靜態庫,如下所示,生成檔案mod.lib

再連結,可生成exe檔案

匯出時,要用巨集相容CC++

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
    void fnStaticLib1();
    void fnStaticLib2();
#ifdef __cplusplus
}
#endif // __cplusplus

也可以匯出類,宣告和實現要分開寫。

用法:

#include "StaticLib1.h"
#pragma comment(lib,"StaticLib1.lib")//.lib字尾可以不加

  或者在vs的連線選項裡手工新增

  

也可以匯出類,宣告和實現要分開寫。