/MD、/MT、/LD (使用執行階段程式庫)
更新:2007 年 11 月
可以讓您指出多執行緒模組是 DLL,並選取正式版本或偵錯版本的執行階段程式庫。
/MD[d]
/MT[d]
/LD[d]
備註
選項 |
描述 |
---|---|
/MD |
會讓您的應用程式使用多執行緒及 DLL 專屬版本的執行階段程式庫。也會定義 _MT 和 _DLL,讓編譯器將程式庫名稱 MSVCRT.lib 置入 .obj 檔案中。 以這個選項編譯的應用程式會以靜態方式連結到 MSVCRT.lib。這個程式庫會提供一層可以讓連結器解析外部參考的程式碼。實際的工作程式碼是包含在 MSVCR90.DLL 中,它在執行階段時必須能提供與 MSVCRT.lib 連結的應用程式使用。 當 /MD 搭配 _STATIC_CPPLIB 前置處理器定義 (/D_STATIC_CPPLIB) 一起使用時,您的應用程式會與靜態多執行緒 Standard C++ 程式庫 (libcpmt.lib) 連結,而不會與動態版本 (msvcprt.lib) 連結,但仍會透過 msvcrt.lib 動態連結至主要的 CRT。 請注意,不支援 _STATIC_CPPLIB 前置處理器定義和 /clr 或 /clr:pure 編譯器選項的組合。如需 /clr 選項之限制的詳細資訊,請參閱 /clr 限制。 |
/MDd |
會定義 _DEBUG、_MT 和 _DLL,並讓應用程式使用偵錯多執行緒及 DLL 專屬版本的執行階段程式庫。它也會使編譯器將程式庫名稱 MSVCRTD.lib 置入 .obj 檔案中。 |
/MT |
會讓您的應用程式使用多執行緒靜態版本的執行階段程式庫。會定義 _MT,並讓編譯器將程式庫名稱 LIBCMT.lib 置入 .obj 檔案中,讓連結器能夠使用 LIBCMT.lib 解析外部符號。 |
/MTd |
會定義 _DEBUG 和 _MT。這個選項也會讓編譯器將程式庫名稱 LIBCMTD.lib 置入 .obj 檔案中,以便連結器使用 LIBCMTD.lib 來解析外部符號。 |
/LD |
建立 DLL。 傳遞 /DLL 選項給連結器。連結器會尋找 (並非必要) DllMain 函式。如果您沒有撰寫 DllMain 函式,連結器將會插入一個會傳回 TRUE 的 DllMain 函式。 連結 DLL 啟始程式碼。 建立一個匯入程式庫 (.lib),如果在命令列上沒有指定匯入 (.exp) 檔案;您必須將匯入程式庫連結到呼叫您的 DLL 的應用程式。 將 /Fe (命名 EXE 檔案) 解譯為命名 DLL 而非 .exe 檔案,預設的程式名稱會變成 basename.dll 而不是 basename.exe。 會隱含 /MT,除非您明確指定 /MD。 |
/LDd |
建立偵錯 DLL。會定義 _MT 和 _DEBUG。 |
如需有關 C 執行階段程式庫和以 /clr (Common Language Runtime 編譯) 編譯時所使用程式庫的詳細資訊,請參閱 C Run-Time Libraries。
傳遞至指定連結器之引動過程的所有模組必須已以相同執行階段程式庫編譯器選項 (/MD、/MT、/LD) 進行編譯。
如需有關使用偵錯版本執行階段程式庫的詳細資訊,請參閱 Run-Time Library Reference。
知識庫文件 Q140584 中也有關於如何選擇適當 C 執行階段程式庫的討論。
如需對於 DLL 進一步討論的詳細資訊,請參閱 DLL。
若要在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁。
按一下 [C/C++] 資料夾。
按一下 [程式碼產生] 屬性頁。
修改 [執行階段程式庫] 屬性。
若要以程式方式設定這個編譯器選項
- 請參閱 RuntimeLibrary。