混在 (ネイティブおよびマネージド) アセンブリ

混在アセンブリは、アンマネージ マシン語命令と MSIL 命令の両方を含むことができます。 これにより、混在アセンブリは、ネイティブ C++ ライブラリとの互換性を維持しながら、.NET コンポーネントを呼び出したり、.NET コンポーネントから呼び出したりできます。 混在アセンブリを使用すると、開発者は、.NET とネイティブ C++ コードが混在したアプリケーションを作成できます。

たとえば、1 つのモジュールを /clr コンパイラ スイッチで再コンパイルするだけで、全体がネイティブ C++ コードで構成される既存のライブラリを .NET プラットフォームに移行できます。 以降、このモジュールで .NET 機能を使用できるようになりますが、アプリケーションの残りの部分との互換性は維持されたままです。 また、同じファイル内の関数ごとにマネージド コンパイルとネイティブ コンパイルを決めることもできます。これについては、「managed、unmanaged」を参照してください。

Visual C++ では、/clr コンパイラ オプションを使用した混合マネージド アセンブリの生成のみがサポートされています。 /clr:pure および /clr:safe コンパイラ オプションは Visual Studio 2015 では非推奨とされており、Visual Studio 2017 ではサポートされていません。 純粋または検証可能なマネージド アセンブリが必要な場合は、C# を使用してそれらを作成することをお勧めします。

以前のバージョンの Microsoft C++ コンパイラ ツールセットでは、混合、純粋、および検証可能の 3 種類のマネージド アセンブリの生成をサポートしていました。 後者の 2 つについては、「純粋なコードと検証可能なコード (C++/CLI)」を参照してください。

このセクションの内容

方法: /clr に移行する
アプリケーションへの .NET 機能の導入またはアプリケーション内の .NET 機能の更新を行うための推奨処理手順について説明します。

方法: /clr を使用して MFC および ATL コードをコンパイルする
共通言語ランタイムをターゲットに既存の MFC および ATL プログラムをコンパイルする方法について説明します。

混在アセンブリの初期化
"ローダー ロック" の問題とそのソリューションについて説明します。

混在アセンブリのためのライブラリ サポート
/clr コンパイルでネイティブ ライブラリを使用する方法について説明します。

パフォーマンスに関する考慮事項
混在アセンブリとデータ マーシャリングのパフォーマンスへの影響について説明します。

アプリケーション ドメインと Visual C++
アプリケーション ドメインに対する Visual C++ サポートについて説明します。

ダブル サンキング
マネージド関数のネイティブ エントリ ポイントのパフォーマンスへの影響について説明します。

/clr で構築された COM オブジェクト使用時における CLR シャットダウンの例外の回避
/clr でコンパイルされた COM オブジェクトを使用するマネージド アプリケーションの適切なシャットダウン方法について説明します。

方法: CRT ライブラリ DLL との依存関係を削除して部分信頼アプリケーションを作成する
msvcm90.dll との依存関係を削除することで、Visual C++ を使用して部分信頼の共通言語ランタイム アプリケーションを作成する方法について説明します。

混在アセンブリのコーディング ガイドラインの詳細については、「マネージ/アンマネージ コードの相互運用性の概要」を参照してください。

関連項目