混合 (原生和受控) 組件

混合元件能夠同時包含 Unmanaged 機器指令和 MSIL 指令。 這可讓它們呼叫 .NET 元件並加以呼叫,同時保留與原生 C++ 程式庫的相容性。 開發人員可以使用混合的 .NET 和原生 C++ 程式碼來撰寫應用程式。

例如,使用 /clr 編譯器參數只重新編譯一個模組 ,即可將包含完全原生 C++ 程式碼的現有程式庫帶入 .NET 平臺。 此課程模組接著可以使用 .NET 功能,但仍與應用程式的其餘部分保持相容。 甚至可以在同一個檔案內,以函式為基礎,在 Managed 和原生編譯之間做出決定(請參閱 Managed、Unmanaged )。

Visual C++ 僅支援使用 /clr 編譯器選項來產生混合 Managed 元件。 Visual Studio 2015 中已淘汰 /clr:pure /clr:safe 編譯器選項,且 Visual Studio 2017 不支援。 如果您需要純或可驗證的受控元件,建議您使用 C# 建立它們。

舊版的 Microsoft C++ 編譯器工具組支援產生三種不同類型的 Managed 元件:混合、純和可驗證。 後兩者會在 Pure 和 Verifiable Code (C++/CLI) 討論。

本節內容

如何:遷移至 /clr
描述在應用程式中導入或升級 .NET 功能的建議步驟。

如何:使用 /clr 編譯 MFC 和 ATL 程式碼
討論如何編譯現有的 MFC 和 ATL 程式以 Common Language Runtime 為目標。

混合組件的初始化
描述「載入器鎖定」問題和解決方案。

混合組件的程式庫支援
討論如何在 /clr 編譯中使用 原生程式庫。

效能考量
描述混合元件和資料封送處理的效能影響。

應用程式定義域和 Visual C++
討論應用程式域的 Visual C++ 支援。

Double Thunking
討論 Managed 函式原生進入點的效能影響。

使用 /clr 建置的 COM 物件時,避免 CLR 關機的例外狀況
討論如何確保使用 /clr 編譯 之 COM 物件的 Managed 應用程式正常關機。

如何:移除 CRT 程式庫 DLL 的相依性以建立部分信任的應用程式
討論如何藉由移除 msvcm90.dll 的相依性,使用 Visual C++ 建立部分信任的 Common Language Runtime 應用程式。

如需混合元件編碼指導方針的詳細資訊,請參閱 Managed/Unmanaged 程式碼互通性概觀

另請參閱