C++マネージ拡張
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2024年2月) |
C++マネージ拡張 (Managed Extensions for C++, Managed C++) は、C++で.NET Frameworkアプリケーションを記述するための、マイクロソフトによるC++の拡張である。これによって、C++でネイティブコードだけでなく共通言語ランタイム (CLR) に向けたアプリケーションを記述できる。この拡張は、2002年にリリースされたVisual Studio .NET (2002) に含まれるVisual C++ .NET (2002) に初めて搭載された。
なお、2005年後半にリリースされたVisual Studio 2005では、より洗練されたC++/CLIという独立した後継言語が登場し、C++マネージ拡張は非推奨となった。さらにVisual Studio 2015では廃止され、C++/CLIへの移行が促されている[1][2]。
マネージドC++およびC++/CLIで記述されたアプリケーションは、C#など他の.NET言語同様に共通中間言語 (CIL) と呼ばれる中間言語にコンパイルされる。「マネージ (Managed)」とは、.NET仮想マシンによって管理されながら動作するという意味である。このため、ガベージコレクタなどのCLRの機能を利用することができ、C#やVB.NETなどといった.NET言語のコードを呼び出したり呼び出されたりといた相互運用ができる。
しかし、必要に応じて1つのアセンブリ(EXE/DLL)にネイティブコードも混在できる点が.NET言語の中でも特殊である。このような言語はマネージドC++およびC++/CLIのほかにはない。一般の.NET言語はP/InvokeやCOMを通してC++コードとやりとりする必要がある。このため、マネージドC++およびC++/CLIはマネージコードとネイティブコードの橋渡しとしてしばしば利用される。すなわち、C/C++あるいはその他の言語で書かれたライブラリを.NET用で利用するラッパーライブラリを作ったり、その逆を作ったりするために用いられるのである。
マネージドC++は以下のコンパイラで使用できる。
- Visual C++ .NET 2002および.NET 2003
- コンパイラオプション
/clr
- Visual C++ 2005以降から2013まで
- コンパイラオプション
/clr:OldSyntax
関連項目
脚注
- ^ Mohamed, Nada. “Compiler Switch Deprecation/Removal Changes in Visual Studio “14””. Visual C++ Team Blog. 2014年7月9日閲覧。
- ^ -clr (共通言語ランタイムのコンパイル)
マネージ拡張C++
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/13 22:03 UTC 版)
「Microsoft Visual C++」の記事における「マネージ拡張C++」の解説
詳細は「C++マネージ拡張」を参照 マネージ拡張C++ (Managed Extensions for C++、Managed C++) は.NET Frameworkに対応したアプリケーションを作成するため、C++を共通言語仕様CLSに準拠させるために独自の拡張を施したものであり、Visual C++ .NET 2002以降に搭載されている。これに対し従来のC++をマネージ拡張C++と区別する際にはネイティブC++ (もしくはアンマネージC++) と呼ぶ。1つのアプリケーション内にマネージ拡張C++とネイティブC++のコードを混在させることも可能であり、従来のC++で書かれたコードを徐々に.NETへ移行したり、あるいは他の.NET言語からC++で作られたライブラリを使用したり、C++コードから.NET Frameworkのクラスライブラリを活用するなどといったこと(相互運用)を可能にしている(グルー言語)。後継となるC++/CLIの登場により、マネージ拡張C++の使用は推奨されなくなっている。Visual C++ 2005-2013では、非推奨ではあるが互換性維持のため従来のマネージ拡張C++のソースコードもコンパイルオプション「/clr:oldSyntax」を指定することでコンパイルできるが、Visual C++ 2015で廃止された。
※この「マネージ拡張C++」の解説は、「Microsoft Visual C++」の解説の一部です。
「マネージ拡張C++」を含む「Microsoft Visual C++」の記事については、「Microsoft Visual C++」の概要を参照ください。
- マネージ拡張Cのページへのリンク