針對 .NET 程序設計,Visual Studio 2017 中的 Visual C++ 支援使用 /clr (Common Language Runtime Compilation) 編譯程式選項建立混合元件。 Visual Studio 2015 中已淘汰 /clr:pure 和 clr:safe 選項,Visual Studio 2017 不支援。 如果您的程式代碼必須安全或可驗證,建議您將其移植到 C#。
混合(/clr)
混合元件(以 /clr 編譯)同時包含非受控部分與受控部分,因此能夠使用 .NET 功能,但仍包含原生程式碼。 這可讓應用程式和元件更新為使用 .NET 功能,而不需要重寫整個專案。 使用 Visual C++ 以這種方式混合受控代碼和本機代碼,稱為 C++ Interop。 如需詳細資訊,請參閱 混合式(原生和受控)組件 和 原生和 .NET 互通。
透過 P/Invoke 從受控組件到原生 DLL 的呼叫將會編譯,但可能會根據安全性設定在執行階段失敗。
有一個程式情境會通過編譯器,但會導致元件無法驗證:透過物件實例使用範圍解析運算符呼叫虛擬函式。 例如: MyObj -> A::VirtualFunction(); 。