在VC編程中常常碰到的.lib文件有一個需要注意的地方是:
靜態庫——函數和數據被編譯進一個二進制文件(擴展名問.lib)。在使用靜態庫的情況下,在編譯連接可執行文件時,連接器從庫中復制這些函數和數據並把他們和應用程序的其他模塊組合起來創建最終的可執行文件(.exe)文件,當發布產品時,只需要發布這個可執行文件,並不需要發布被使用的靜態庫。
動態庫——在使用動態庫時,往往提供兩個文件:一個引入庫(.lib)文件和一個DLL(.dll)文件。雖然引入庫的后綴名也是".lib",但是,動態庫的引入庫文件和靜態庫文件有着本質的區別。對一個dll來說,器引入庫文件(.lib)包含該DLL導出的函數和變量的符號名,而.dll文件包含該DLL實際的函數和數據,在使用動態庫的情況下,在編譯連接和執行文件時,只需要在連接該DLL的引入庫文件,該DLL中的函數代碼和數據並不復制到可執行文件中,直到可執行程序運行時,才去加載所需要的DLL,將該DLL映射到進程的地址空間中,然后訪問DLL中導出的函數。這時,在發布產品時,除了發布可執行文件以外,同時還要發布該程序將要調用的動態連接庫。
參考資料:《VC++深入解析》