Sean's Note: [C++/CLI] Visual C++ 2008 /MT 和 /CLR 的命令列選項不相容

2010年1月7日 星期四

[C++/CLI] Visual C++ 2008 /MT 和 /CLR 的命令列選項不相容


[ 如果使用支援 /clr ]


[ 執行階段應選 /MD ]


[ 如果選擇 /MT 會有不相容的錯誤訊息產生 ]




以下取自微軟的 msdn :
/MD
會讓您的應用程式使用多執行緒及 DLL 專屬版本的執行階段程式庫。也會定義 _MT_DLL,讓編譯器將程式庫名稱 MSVCRT.lib 置入 .obj 檔案中。 以這個選項編譯的應用程式會以靜態方式連結到 MSVCRT.lib。這個程式庫會提供一層可以讓連結器解析外部參考的程式碼。實際的工作程式碼是包含在 MSVCRT.dll 中,它在執行階段時必須能提供給與 MSVCRT.lib 連結的應用程式使用。當 /MD 配合所定義 _STATIC_CPPLIB (/D_STATIC_CPPLIB) 使用時,它會讓應用程式與靜態的多執行緒 Standard C++ 程式庫 (libcpmt.lib) 連結,而不與動態版本 (msvcprt.lib) 連結,同時仍透過 msvcrt.lib 動態地連結至主要的 CRT。
/MT
會讓您的應用程式使用多執行緒靜態版本的執行階段程式庫。會定義 _MT,並讓編譯器將程式庫名稱 LIBCMT.lib 置入 .obj 檔案中,讓連結器能夠使用 LIBCMT.lib 解析外部符號。


沒有留言:

張貼留言