C++マネージ拡張(Managed Extensions for
C++, Managed
C++)は、
マイクロソフトが開発した、
C++で
.NET Frameworkアプリケーションを記述するための拡張機能です。この拡張によって、
C++を用いてネイティブコードだけでなく、
共通言語ランタイム(CLR)をターゲットとしたアプリケーションの開発が可能になりました。この技術は、
2002年にリリースされたVisual Studio
.NET (2002) に含まれるVisual
C++ .NET (2002) に初めて搭載されました。
しかし、
2005年後半にリリースされたVisual Studio 2005では、より洗練された
C++/CLIという独立した新しい言語が登場したため、
C++マネージ拡張は非推奨となりました。さらに、Visual Studio 2015では完全に廃止され、開発者には
C++/CLIへの移行が推奨されています。
マネージド
C++および
C++/CLIで記述されたアプリケーションは、C#など他の
.NET言語と同様に、共通
中間言語(CIL)と呼ばれる
中間言語にコンパイルされます。「マネージ(Managed)」という言葉は、
.NET仮想マシンによって管理されながら動作することを意味します。このため、ガベージコレクションなどのCLRの機能を利用でき、C#やVB
.NETといった他の
.NET言語のコードとの相互運用が容易になります。
特筆すべき点として、マネージド
C++および
C++/CLIでは、必要に応じて単一のアセンブリ(EXE/DLL)にネイティブコードを混在させることが可能です。これは、他の
.NET言語では通常できないことであり、マネージド
C++と
C++/CLIの大きな特徴の一つです。他の
.NET言語では、P/InvokeやCOMといった技術を用いて
C++コードとやり取りする必要があります。そのため、マネージド
C++および
C++/CLIは、マネージコードとネイティブコードの橋渡しとしてしばしば利用されます。例えば、C/
C++や他の言語で書かれた既存のライブラリを
.NET環境で利用するためのラッパーライブラリを作成したり、その逆のケース、すなわち
.NET環境で作成したライブラリをネイティブ環境から利用するためのラッパーライブラリを作成したりする際に重宝されます。
マネージド
C++は、以下のコンパイラで利用できました。
Visual C++ .NET 2002および.NET 2003
コンパイラオプション: `/clr`
Visual C++ 2005から2013まで
コンパイラオプション: `/clr:OldSyntax`
関連事項
.NET Framework
C++/CLI