共用方式為


混合 (原生和受控) 組件

混合元件能夠同時包含 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 元件:混合、純和可驗證。 后兩個會在純和可驗證的程式代碼中討論(C++/CLI)。

本節內容

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

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

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

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

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

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

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

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

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

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

另請參閱