程式開發中,將重複代碼封裝為庫是提升復用性與維護性的關鍵。本文基於 Visual Studio 環境,詳細對比靜態庫與動態庫的創建流程、部署差異、適用場景,並提供圖文並茂的完整操作指南。
| 維度 | 靜態庫 (.lib) | 動態庫 (.dll) |
|---|---|---|
| 鏈接方式 | 編譯時嵌入可執行檔 | 運行時動態加載 |
| 文件體積 | 增大最終 EXE 體積 | EXE 體積小,獨立 DLL 文件 |
| 更新部署 | 修改需重新編譯主程式 | 替換 DLL 即可,無需重編主程式 |
| 共享能力 | 每個項目獨享副本 | 多進程/項目共享單份內存副本 |
| 符號導出 | 無需特殊聲明 | 需 __declspec(dllexport) |
專案屬性 → 配置類型 → 選擇「靜態庫 (.lib)」。
無需特殊修飾符,直接編寫函數定義實現。
每次修改庫代碼,必須重新編譯生成 .lib,並手動複製到所有調用項目目錄下覆蓋舊版本。 這是靜態庫最大的維護痛點。
// 庫頭文件 MyLib.h #ifdef MYLIB_EXPORTS #define MYLIB_API __declspec(dllexport) #else #define MYLIB_API __declspec(dllimport) #endif MYLIB_API int Add(int a, int b);
dllexport/dllimport 切換,而非硬編碼理解靜態與動態庫的本質差異,結合專案實際場景選型,是構建可維護、高性能 C/C++ 系統的基礎功力。