在Windows平臺上,.lib 檔案可以是靜態庫或動態連結庫(DLL)的匯入庫。這兩種型別的 .lib 檔案雖然具有相同的副檔名,但它們的用途和工作方式有所不同。
靜態庫 (.lib)
靜態庫是一種包含一組預編譯的函式、變數和資料的庫,這些內容在編譯時直接整合到最終的可執行檔案(EXE)或其他庫中。使用靜態庫的好處是,所有必要的程式碼和資料都包含在最終的二進位制檔案中,不需要額外的依賴就可以執行。
匯入庫 (.lib) 用於 DLL
對於動態連結庫(DLL),.lib 檔案通常作為一個匯入庫存在。匯入庫不包含DLL的實際執行程式碼,而是包含了足夠的資訊來告訴連結器如何在執行時定位和連線到DLL中的函式。
匯入庫的作用:
- 連結時解析:當你的應用程式使用DLL中的函式時,匯入庫幫助連結器解析這些外部函式的引用。連結器使用匯入庫中的資訊來處理對DLL函式的呼叫,確保在程式執行時能夠找到並呼叫這些函式。
- 執行時動態載入:雖然匯入庫在編譯和連結時使用,但它指向的DLL在應用程式執行時才被載入到記憶體中。這允許多個程式共享同一個DLL副本,減少記憶體佔用並允許在不重新編譯所有依賴程式的情況下更新DLL。