共用方式為


選擇 .netmodule 輸入檔的格式

MSIL .obj檔案(以 /clr 編譯)也可以當做 .netmodule 檔案使用。 .obj檔案包含元數據和原生符號。 .netmodule 僅包含中繼資料。

您可以透過 /addmodule 編譯程序選項將 MSIL .obj 檔案傳遞至任何其他 Visual Studio 編譯程式(但請注意,.obj檔案會成為產生的元件的一部分,而且必須隨附元件)。 例如,Visual C# 和 Visual Basic 具有 /addmodule 編譯程序選項。

注意

在大部分情況下,您需要從建立 .net 模組的編譯中傳遞 .obj 檔給連結器。 傳遞 .dll 或 .netmodule MSIL 模組檔案給連結器可能會產生 LNK1107。

.obj 檔案加上其相關聯的 .h 檔案 (經由原始程式碼中的 #include 加以參考),可以讓 C++ 應用程式使用模組中的原生類型,而在 .netmodule 檔中,只有 Managed 類型才能由 C++ 應用程式加以使用。 如果您嘗試將.obj檔案傳遞至 #using,將無法使用原生類型的相關信息;請改為 #include.obj 檔案的 .h 檔案。

其他 Visual Studio 編譯程式只能從模組取用 Managed 類型。

使用下列命令來判斷您是否需要使用 .netmodule 或 .obj 檔案作為 MSVC 連結器模組輸入:

  • 如果您是使用 Visual C++ 以外的 Visual Studio 編譯器進行建置,請產生 .netmodule 並且使用 .netmodule 做為連結器的輸入。

  • 如果您使用 MSVC 編譯程式來產生模組,而且模組將用來建置連結庫以外的專案,請使用編譯程式所產生的.obj檔案作為連結器的模組輸入;請勿使用 .netmodule 檔案作為輸入。

  • 如果您的模組將用來建置原生(非受控)連結庫,請使用.obj檔案作為連結器模塊輸入,併產生 .lib 連結庫檔案。

  • 如果您的模組會用來建置 Managed 程式庫,而且如果連結器的所有模組輸入都能夠進行驗證 (以 /clr:safe 產生),請使用 .obj 檔案做為連結器的模組輸入,然後產生 .dll (組件) 或 .netmodule (模組) 程式庫檔。

  • 如果您的模組將用來建置 Managed 連結庫,而且如果只有 /clr 產生連結器的一或多個模組輸入,請使用 .obj 檔案作為連結器的模組輸入,併產生.dll (assembly)。 如果您想要從連結庫公開 Managed 類型,而且也想要C++應用程式取用連結庫中的原生類型,您的連結庫將包含連結庫元件模組的.obj檔案(您也會想要為每個模組寄送 .h 檔案,以便從原始程式碼 #include 參考它們)。

另請參閱

.netmodule 檔作為連結器輸入