C++/MFCで作成したコード(アンマネージコード)を.NET Framework(マネージコード)で利用する場合には、プロジェクトの設定変更が必要になるという話。
アンマネージとマネージコード
直訳すると「管理外コード」と「管理されたコード」で、管理とはMicrosoftが提供してきた「.NET Framework」上で動作するか否です。つまり「マネージ」コードとは「.NET Framework」のアセンブリを基本として動作するコードのことをです。
それに対して「アンマネージ」なコードは、「.NET Framework」に依存しないプログラムコード、例えばMFCなどのWin32APIなど昔からあるライブラリに依存しているコードを指します。
プロジェクトの変更
アンマネージコード(C++/MFC)で作成したプロジェクトでマネージコード(.NET Framework)を利用する場合には次のように設定します。
- 作成されているプロジェクトを開く。
- [プロジェクト|***のプロパティ]メニューを選択する。
- 表示された[*** プロパティページ]内の[構成プロパティ|全般]を選択する。
- [プロジェクトの既定値]内の[共通言語ランタイム サポート]を[共通言語ランタイム サポート(/clr)]に変更する。
- [OK]ボタンを選択して[*** プロパティページ]を閉じる。
上記の設定でMFCなどのアンマネージプロジェクトでマネージコードが利用できるようになります。
コード例
#using <mscorlib.dll>; #using <System.dll>; using namespace System; using namespace System::Text::RegularExpressions; String^ src = "テストhttp://www.hogehoge.co.jp/index.htmlテスト終了"; System::Text::RegularExpressions::Regex::Replace(src, "([^=""]|^)(http\:[\w\.\~\-\/\?\&amp;\=\@\;\#\:\%]+)", "$1$2", RegexOptions::ECMAScript);
エラーが出力される場合
上記のコードを追加して次のようなエラーが出る場合がある。
cl : コマンド ライン error D8016 : コマンド ライン オプション ‘/MTd’ と ‘/clr’ は同時に指定できません
このエラーの場合には次のようにプロジェクトのプロパティを変更する。
(MFCがスタティックリンクで利用されている場合のみ)
- [プロジェクト|***のプロパティ]メニューを選択する。
- 表示された[*** プロパティページ]内の[構成プロパティ|全般]を選択する。
- [プロジェクトの既定値]内の[MFC の使用]を[共有 DLL で MFC を使う]に変更する。
- [適用]ボタンを選択する。
- [*** プロパティページ]内の[構成プロパティ|C/C++|コード生成]を選択する。
- [プロジェクトの既定値]内の[ランタイム ライブラリ]を[マルチスレッド デバッグ DLL(/MDd)]に変更する。
- [OK]ボタンを選択して[*** プロパティページ]を閉じる。
スポンサーリンク
最後までご覧いただき、ありがとうございます。