混在 (ネイティブおよびマネージ) アセンブリMixed (native and managed) assemblies

混在アセンブリは、アンマネージ マシン語命令と MSIL 命令の両方を含むことができます。Mixed assemblies are capable of containing both unmanaged machine instructions and MSIL instructions. これにより、それらを呼び出し、ネイティブの C++ ライブラリとの互換性を維持しながら、.NET コンポーネントによって呼び出されることができます。This allows them to call and be called by .NET components, while retaining compatibility with native C++ libraries. 混在アセンブリを使用して、開発者は .NET とネイティブ C++ コードの組み合わせを使用してアプリケーションを作成できます。Using mixed assemblies, developers can author applications using a mixture of .NET and native C++ code.

1 つのモジュールを再コンパイルしてネイティブ C++ コード全体で構成される既存のライブラリを .NET プラットフォームに移動するなど、 /clrコンパイラ スイッチ。For example, an existing library consisting entirely of native C++ code can be brought to the .NET platform by recompiling just one module with the /clr compiler switch. 以降、このモジュールで .NET 機能を使用できるようになりますが、アプリケーションの残りの部分との互換性は維持されたままです。This module is then able to use .NET features, but remains compatible with the remainder of the application. 同じファイル内の関数ごとに、マネージ コードとネイティブ コンパイルの間を決定することも (を参照してくださいマネージ、アンマネージ)。It is even possible to decide between managed and native compilation on a function-by-function basis within the same file (see managed, unmanaged).

Visual C を使用してマネージの混在のアセンブリの生成をサポートするのみ、 /clrコンパイラ オプション。Visual C++ only supports the generation of mixed managed assemblies by using the /clr compiler option. /Clr: 純粋な/clr:safeコンパイラ オプションは Visual Studio 2015 で非推奨とされ、Visual Studio 2017 でサポートされていません。The /clr:pure and /clr:safe compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. 純粋なまたは検証可能なマネージ アセンブリが必要な場合は、c# を使用して作成することをお勧めします。If you require pure or verifiable managed assemblies, we recommend you create them by using C#.

以前のバージョンの MicrosoftC++コンパイラ ツールセットには、次の 3 つの種類のマネージ アセンブリの生成がサポートされています。 混合、純粋、および検証可能な。Earlier versions of the Microsoft C++ compiler toolset supported the generation of three distinct types of managed assemblies: mixed, pure, and verifiable. 後者の 2 つは、後ほど純粋で検証可能なコード (C +/cli CLI)します。The latter two are discussed in Pure and Verifiable Code (C++/CLI).

このセクションの内容In this section

方法: /Clr:pure に移行します。How to: Migrate to /clr
アプリケーションへの .NET 機能の導入またはアプリケーション内の .NET 機能の更新を行うための推奨処理手順について説明します。Describes the recommended steps for either introducing or upgrading .NET functionality in your application.

方法: MFC および ATL コードを使用して、/clr をコンパイルします。How to: Compile MFC and ATL Code By Using /clr
共通言語ランタイムをターゲットに既存の MFC および ATL プログラムをコンパイルする方法について説明します。Discusses how to compile existing MFC and ATL programs to target the Common Language Runtime.

混在アセンブリの初期化Initialization of Mixed Assemblies
"ローダー ロック" の問題とそのソリューションについて説明します。Describes the "loader lock" problem and solutions.

混在アセンブリのためのライブラリ サポートLibrary Support for Mixed Assemblies
ネイティブ ライブラリを使用する方法について説明します /clrコンパイルします。Discusses how to use native libraries in /clr compilations.

パフォーマンスに関する考慮事項Performance Considerations
混在アセンブリとデータ マーシャリングのパフォーマンスへの影響について説明します。Describes the performance implications of mixed assemblies and data marshaling.

アプリケーション ドメインと Visual C++Application Domains and Visual C++
アプリケーション ドメインに対する Visual C++ サポートについて説明します。Discusses Visual C++ support for application domains.

ダブル サンキングDouble Thunking
マネージド関数のネイティブ エントリ ポイントのパフォーマンスへの影響について説明します。Discusses the performance implications of a native entry point for a managed function.

/Clr で CLR シャット ダウン時に消費して構築された COM オブジェクトの例外の回避Avoiding Exceptions on CLR Shutdown When Consuming COM Objects Built with /clr
コンパイルされた COM オブジェクトを使用するマネージ アプリケーションの適切なシャット ダウンする方法について説明します /clrします。Discusses how to ensure proper shutdown of a managed application that consumes a COM object compiled with /clr.

方法: CRT ライブラリ DLL との依存関係を削除して部分信頼アプリケーションを作成するHow to: Create a Partially Trusted Application by Removing Dependency on the CRT Library DLL
Msvcm90.dll との依存関係を削除することで、Visual C を使用して部分的に信頼された共通言語ランタイム アプリケーションを作成する方法について説明します。Discusses how to create a partially trusted Common Language Runtime application using Visual C++ by removing dependency on msvcm90.dll.

混在アセンブリのコーディングのガイドラインの詳細については、MSDN の記事を参照してください。 、概要のマネージ/アンマネージ コードの相互運用性します。For more information about coding guidelines for mixed assemblies, see the MSDN article An Overview of Managed/Unmanaged Code Interoperability.

関連項目See also