none
CLR のプロジェクトで MFCクラスを扱う方法 RRS feed

  • 質問

  • いつもお世話になっております。

     

    Visual Studio 2005 CLRのプロジェクトでフォームを作成した場合、

    MFCの別DLLをリンクし、MFCのクラスを扱うことは可能でしょうか?

     

    画面は、CLRプロジェクトで新たに作成したプロジェクト

    データなどMFCで作成したDLLを、そのまま使用したいと考えています。

     

    よろしくお願いします。

    2008年6月4日 6:53

回答

  •  うぇねと申します。

     確認ですが、CLR のプロジェクトというのは、C++ のプロジェクトに「共通言語ランタイムを使用する(/clr オプションをつけたもの)」と言うことでよろしいでしょうか?

     もしそうであれば、MFC や MSVCRT などの DLL が必要とするライブラリをリンクすることで使用可能です。

     ネイティブ・クラスとマネージ・クラスの混在に気をつけて、がんばってください。

     

    2008年6月4日 8:31
  •  うぇねです。お疲れ様です。

     

     DLL の静的リンクは無理ですが、Windows フォームアプリケーションから MFC の DLL で作ったクラスを利用することは可能です。

     CString 型には CString(String^) というコンストラクタもあります。プロジェクトのプロパティで /clrStick out tongueure になっているものを /clr にして MFC の使用を指定してやれば、大丈夫です。

     リンカの項目で依存ファイルが$(NoInherit)になってたりするので、プロジェクトの規定値にしてやれば、普通にMFCのクラスが利用できます。

     

     それでは。

    2008年6月4日 9:25

すべての返信

  •  うぇねと申します。

     確認ですが、CLR のプロジェクトというのは、C++ のプロジェクトに「共通言語ランタイムを使用する(/clr オプションをつけたもの)」と言うことでよろしいでしょうか?

     もしそうであれば、MFC や MSVCRT などの DLL が必要とするライブラリをリンクすることで使用可能です。

     ネイティブ・クラスとマネージ・クラスの混在に気をつけて、がんばってください。

     

    2008年6月4日 8:31
  • 回答ありがとうございます。

     

    わかりにくい表現で申し訳ありません。

    CLRのプロジェクトは、プロジェクトの種類:CLR 、Windowsフォームアプリケーションで作成したプロジェクトになります。

    そのフォームを持つプロジェクトに、MFCで作成したDLLを静的リンクしたいと考えています。

     

    System::Windows::Forms::Formのクラス内で、リンクしたMFCのクラスを持つヘッダー等をインクルードし、

    CString、やCTypedPtrList等のメンバを取得し、データを扱えればと思うのですが、

    実現可能かどうかもわかりませんでした。

     

    よろしくお願いします。

    2008年6月4日 9:02
  •  うぇねです。お疲れ様です。

     

     DLL の静的リンクは無理ですが、Windows フォームアプリケーションから MFC の DLL で作ったクラスを利用することは可能です。

     CString 型には CString(String^) というコンストラクタもあります。プロジェクトのプロパティで /clrStick out tongueure になっているものを /clr にして MFC の使用を指定してやれば、大丈夫です。

     リンカの項目で依存ファイルが$(NoInherit)になってたりするので、プロジェクトの規定値にしてやれば、普通にMFCのクラスが利用できます。

     

     それでは。

    2008年6月4日 9:25
  • 回答ありがとうございます。

     

    DLL の静的リンクは無理ですか…

     

    回答を参考に作成してみます。

     

    ありがとうございました。

     

    2008年6月5日 9:18
  •  うぇねです。

     えーっと、DLL の静的リンクは lib 指定のことですか?

     それなら大丈夫です。msvcrt.lib や、いろいろなものをリンクできます。

     安心してチャレンジしてください。

     

     それでは。

     

    2008年6月6日 1:35