混在 (ネイティブおよびマネージ) アセンブリ
混在アセンブリは、アンマネージ マシン語命令と MSIL 命令の両方を含むことができます。 これにより、混在アセンブリは、全体としてはアンマネージのコンポーネントとの互換性を維持しながら、.NET コンポーネントを呼び出したり、.NET コンポーネントから呼び出したりできます。 混在アセンブリを使用すると、開発者は、マネージ機能とアンマネージ機能が混在したアプリケーションを作成できます。 このため、混在アセンブリは、既存の Visual C++ アプリケーションを .NET プラットフォームに移行するのに理想的です。
たとえば、1 つのモジュールを /clr コンパイラ スイッチで再コンパイルするだけで、全体がアンマネージ関数で構成される既存のアプリケーションを .NET プラットフォームに移行できます。 以降、このモジュールで .NET 機能を使用できるようになりますが、アプリケーションの残りの部分との互換性は維持されたままです。 この方法を使用すると、アプリケーションを要素ごとに少しずつ .NET プラットフォームに変換できます。 また、同じファイル内の関数ごとにマネージ コンパイルとアンマネージ コンパイルを決めることもできます。これについては、「managed, unmanaged」を参照してください。
Visual C++ では、混合、純粋、および検証可能の 3 種類のマネージ アセンブリの生成をサポートしています。 後の 2 つについては、「純粋なコードと検証可能なコード (C++/CLI)」を参照してください。
このセクションの内容
方法: /clr に移行する
アプリケーションへの .NET 機能の導入またはアプリケーション内の .NET 機能の更新を行うための推奨処理手順について説明します。方法: /clr を使用して MFC および ATL コードをコンパイルする
共通言語ランタイムをターゲットに既存の MFC および ATL プログラムをコンパイルする方法について説明します。混在アセンブリの初期化
"ローダー ロック" の問題とそのソリューションについて説明します。混在アセンブリのためのライブラリ サポート
/clr コンパイルでネイティブ ライブラリを使用する方法について説明します。Interop (C++) のパフォーマンスに関する考慮事項
混在アセンブリとデータ マーシャリングのパフォーマンスへの影響について説明します。アプリケーション ドメインと Visual C++
アプリケーション ドメインに対する Visual C++ サポートについて説明します。ダブル サンキング (C++)
マネージ関数のネイティブ エントリ ポイントのパフォーマンスへの影響について説明します。/clr で構築された COM オブジェクト使用時における CLR シャットダウンの例外の回避
/clr でコンパイルされた COM オブジェクトを使用するマネージ アプリケーションの適切なシャットダウン方法について説明します。方法: CRT ライブラリ DLL との依存関係を削除して部分信頼アプリケーションを作成する
msvcm90.dll との依存関係を削除することで、Visual C++ を使用して部分信頼の共通言語ランタイム アプリケーションを作成する方法について説明します。
混在アセンブリのコーディング ガイドラインの詳細については、MSDN の記事の「An Overview of Managed/Unmanaged Code Interoperability」(https://msdn.microsoft.com/ja-jp/netframework/default.aspx?pull=/library/ja-jp/dndotnet/html/manunmancode.asp) を参照してください。