結論
動態庫(DLL)專案可以引用靜態庫(.lib)。靜態庫的代碼會被鏈接進 DLL 二進制文件中。
配置要點
- 附加庫目錄:專案屬性 → 鏈接器 → 一般 → 附加庫目錄,加入
a.lib 所在路徑。
- 附加相依性:鏈接器 → 輸入 → 附加相依性,加入
a.lib。
- 運行時庫一致:靜態庫與 DLL 專案必須使用相同的 CRT 模式(皆 /MT、/MTd 或 /MD、/MDd),否則會有多重定義或堆損壞。
- 導出符號:若靜態庫中類/函數需從 DLL 導出,必須在靜態庫代碼中標記
__declspec(dllexport)(或透過 .def 文件)。
常見錯誤 LNK1104
「無法打開文件 a.lib」通常是路徑未加入庫目錄,或檔案名大小寫/路徑錯誤。