天天看點

C運作時庫(C Run-Time Libraries)

我的程式必定會使用C/C++的系統函數,我們可以使用靜态庫的方式(/MT)使用這些函數,也可以使用動态庫的方式(/MD)使用這些函數。MT,連結時需要LIBCMT.lib;MD,連結時需要MSVCRT.lib ,運作時需要 MSVCR80.DLL。

各種 C 運作時庫的差別

( 1 )靜态連結的單線程庫

靜态連結的單線程庫隻能用于單線程的應用程式, C 運作時庫的目标代碼最終被編譯在應用程式的二進制檔案中。通過 /ML 編譯選項可以設定 Visual C++ 使用靜态連結的單線程庫。

( 2 )靜态連結的多線程庫

靜态連結的多線程庫的目标代碼也最終被編譯在應用程式的二進制檔案中,但是它可以在多線程程式中使用。通過 /MT 編譯選項可以設定 Visual C++ 使用靜态連結的多線程庫。

( 3 )動态連結的運作時庫

動态連結的運作時庫将所有的 C 庫函數儲存在一個單獨的動态連結庫 MSVCRTxx.DLL 中, MSVCRTxx.DLL 處理了多線程問題。使用 /MD 編譯選項可以設定 Visual C++ 使用動态

多線程(/MT) 多線程調試(/MTd) 多線程 DLL (/MD) 多線程調試

C 運作時庫 庫檔案
Single thread(static link) ML  libc.lib
Debug single thread(static link) MLd libcd.lib
MultiThread(static link) MT libcmt.lib
Debug multiThread(static link) MTd libcmtd.lib
MultiThread(dynamic link) MD msvert.lib
Debug multiThread(dynamic link) MDd msvertd.lib 

VS2005配置運作時庫

繼續閱讀