混在 (ネイティブおよびマネージ) アセンブリ
更新 : 2007 年 11 月
混在アセンブリは、アンマネージ マシン語命令と MSIL 命令の両方を含むことができます。これにより、混在アセンブリは、全体としてはアンマネージのコンポーネントとの互換性を維持しながら、.NET コンポーネントを呼び出したり、.NET コンポーネントから呼び出したりできます。混在アセンブリを使用すると、開発者は、マネージ機能とアンマネージ機能が混在したアプリケーションを作成できます。このため、混在アセンブリは、既存の Visual C++ アプリケーションを .NET プラットフォームに移行するのに理想的です。
たとえば、1 つのモジュールを /clr コンパイラ スイッチで再コンパイルするだけで、全体がアンマネージ関数で構成される既存のアプリケーションを .NET プラットフォームに移行できます。以降、このモジュールで .NET 機能を使用できるようになりますが、アプリケーションの残りの部分との互換性は維持されたままです。この方法を使用すると、アプリケーションを要素ごとに少しずつ .NET プラットフォームに変換できます。また、同じファイル内の関数ごとにマネージ コンパイルとアンマネージ コンパイルを決めることもできます。これについては、「managed, unmanaged」を参照してください。
Visual C++ 2005 では、混合、純粋、および検証可能の 3 種類のマネージ アセンブリの生成をサポートしています。後の 2 つについては、「純粋なコードと検証可能なコード」を参照してください。
このセクションの内容
方法 : /clr に移行する
アプリケーションへの .NET 機能の導入またはアプリケーション内の .NET 機能の更新を行うための推奨処理手順について説明します。方法 : /clr を指定して MFC および ATL コードをコンパイルする
共通言語ランタイムをターゲットに既存の MFC および ATL プログラムをコンパイルする方法について説明します。混在アセンブリの初期化
"ローダー ロック" の問題とそのソリューションについて説明します。方法 : _vcclrit.h に対する依存関係を削除する
Visual C++ 2003 でローダー ロックを回避する推奨ソリューションを元に戻す方法について説明します。混在アセンブリのためのライブラリ サポート
/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/netframework/default.aspx?pull=/library/en-us/dndotnet/html/manunmancode.asp) を参照してください。