/MD、/MT、/LD (使用執行階段程式庫)

指出多執行緒模組是否為 DLL,並指定執行階段程式庫的正式版本或偵錯版本。

語法

/MD[d]
/MT[d]
/LD[d]

備註

選項 描述
/MD 讓應用程式使用多執行緒特定與 DLL 特定版本的執行階段程式庫。 定義 _MT_DLL,並讓編譯器將程式庫名稱 MSVCRT.lib 放入 .obj 檔。

使用這個選項編譯的應用程式,都以靜態方式連結至 MSVCRT.lib。 此程式庫提供可讓連結器解析外部參考的程式碼層。 實際的工作程式碼包含在 MSVCR versionnumber.DLL 中,此程式碼必須在執行時間提供給與 MSVCRT.lib 連結的應用程式。
/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 啟始程式碼。

如果在命令列上未指定匯出 (.exp) 檔案,則會建立匯入程式庫 (.lib)。 您應將匯入程式庫連結至呼叫 DLL 的應用程式。

/Fe (Name EXE 檔案) 解譯為命名 DLL,而不是 .exe 檔案。 根據預設,程式名稱會 變成 basename.dll 而不是 basename.exe

隱含 /MT 除非您明確指定 /MD
/LDd 建立偵錯 DLL。 定義 _MT_DEBUG

如需 C 執行時間程式庫的詳細資訊,以及使用 /clr 編譯時所使用的程式庫,請參閱 CRT 連結 庫功能 。

傳遞至指定連結器調用的所有模組都必須使用相同的執行時間程式庫編譯器選項 ( /MD /MT /LD ) 編譯。

如需如何使用執行時間程式庫偵錯版本的詳細資訊,請參閱 C 執行時間程式庫參考

如需 DLL 的詳細資訊,請參閱 在 Visual Studio 中建立 C/C++ DLL。

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [ 組態屬性 > C/C++ > 程式碼產生 ] 屬性頁。

  3. 修改執行時間連結 屬性。

若要以程式方式設定這個編譯器選項

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法