MFCからC#への移行についての必要性

このQ&Aのポイント
  • MFCからC#への移行作業を検討しています。
  • C++のコアソースはDLL化し、GUIはWPFなどを使えるようになるためメリットがあります。
  • 将来的にC#の需要が増えることも考慮しています。
回答を見る
  • ベストアンサー

【GUI】MFCからC#への移行についての必要性

今まで主にMFCを用いたコーディングをしていたのですが GUIをMFCからC#に移行する作業を検討しています。 そこでCoreとなるソースはC++にしておきたいので 「MFC ダイアログベース」 から 「C++ DLL」に移植を考えてます。 その為、今テストとしていくつかのソースコードをDLL化してみましたが MFCのAPIによるエラーが非常に多く作業量が膨らむばかりです。 ここで質問ですが、このような作業は将来的にメリットを生み出す事かどうか 個人差があるかとおもいますが皆様からのご意見頂けないでしょうか? 私の方で気づいたメリットは以下の点だけで、作業に価値があるか少しずつ疑問になってます・・・。 ・WPFなどを使える事からGUI周りのレベルが上がる ・今後、C#による需要が多くなると見込んでいるため。 作業量が多く挫折しそうです。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.1

使う人からすれば、どの言語で作られていたとしても、あまり関係がありません。(.NETのランタイム読み込みで起動が少し遅いとか、パフォーマンスの差はあるにしても) MFC C++からC#に移行させるメリットがあるかどうかですが、プログラムの内容や、今後の展開などによって変わってくると思います。 実際のプロジェクトでも、基本的にはC#で作成し、一部の処理だけC++を使う…という事もありますが、この場合はC++でしか出来ない、C++の方が効率が良い、過去の膨大なC++資産を活用したい…など、明確な理由がある場合のみです。 もし、そのような理由が無いのであれば、ロジックなどを含め全てC#に移行してしまった方が良いと思います。 あげられているメリットとしては、どちらかというと「個人のスキルに対するメリット」という感じだと思いますが、もしそうであればロジック部分も含めて.NET系に置き換えてみるのも良いかもしれませんよ。 もしくは、ネイティブ(C++)との連携方法もきちんと理解しておくために、あえて一部処理はC++で残しておくのも手ですが。

mindeyed
質問者

お礼

非常に参考になりました。 .NET化の導入と既存資産の活かし方を考えていきたいと思います。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.2

>今まで主にMFCを用いたコーディングをしていたのですが >GUIをMFCからC#に移行する作業を検討しています。 「MFCから.NET Frameworkに移行する作業」では? >そこでCoreとなるソースはC++にしておきたいので >「MFC ダイアログベース」 から 「C++ DLL」に移植を考えてます。 文章の意味がわからないんですが・・・ 「MFC ダイアログベース」から「C++ DLL」に移植とはどういう事ですか? なんとなく、MFCで作ったDLLをC#で使えるようにしようとしてる気がするんですが。

mindeyed
質問者

お礼

>「MFCから.NET Frameworkに移行する作業」では? いえ、あくまでC++言語を活用したく考えてました。 MFCで作ったDLLを... →C++/CLIにたどり着きました。

関連するQ&A

  • 途中からMFCを使用したい

    はじめて質問させていただきますVisual C++初心者です。 現在Visual C++ 6.0で開発作業を行っていますが大変困っています。 前任者が「MFCを使用しない」でプロジェクトを作成していたのですが、前任者の退職により本作業を引き継ぐことになりました。 ほとんどAPIのみで作成されたいましたが、MFCを使用したいと考え、プロジェクト設定から「共通DLLでMFCを使用」にしたところ、リンカエラー(LNK2001)が続出しました。(恐らくAPI使用分だけ出ているのだと思います。) このように途中からMFCを使用する場合、簡単に設定変更できるものなのでしょうか。やはり、MFC使用でプロジェクトを作り直してからコードを移植していったほうが早いのでしょうか。 諸先輩方のご意見を参考にさせてください。宜しくお願い致します。

  • いろいろなGUI

    いろいろなGUI えーと、どうゆう質問の趣旨かと言うと、WindowsでGUIがやりたいのですが、 どうしていいのか分かりません。 とりあえずCとPerlが出来ますが、exeがいいのでCがいいです。 一応CでWinAPIだかを使って画面を出したり文字を表示させたりはしたのですが、 おっそろしく面倒くさかった上、 覚える量や、いちいち指定する量が正気の沙汰ではないと感じました。 (APIに指定しなかった部分は全部デフォルトのデータが適用されるとかだったら続けてたと思います)。 一応私としては複雑なGUIはいらないので、 Windowsの基本的な画面だけ扱えればそれで満足です。 あまり面倒でイラっとくる量の記述(と言うか画面指定)はしたくないです。 WindowsでGUIを実現する手段に関しては全然知りません。 Windowsの何がどうなって画面が表示されてるかも知りません。 そこで質問なのですが、 言語とGUIツール(?)の名称をセットで教えて下さい。 それをいろいろ教えて下さい。 簡単な解説は付けてくれると嬉しいですが、 名称さえ分かれば自分で検索して確認します。 どーしてもCで手っ取り早いGUIがないのであれば、 JavaでもDelphiでも新規で言語を覚え直します。(そのくらいGUIめんどくせぇって思いました)。 しかし可能な限り出費はしたくないと思ってます。 ちなみに、今までGUIは以下の物をやりました。 CでWinAPI →   全部手書き。やってられないと思って却下。 PerlでGUI →   そこそこ思い通りに使えますが今回はコンパイルでexeがいいです。 HSP →   昔やって、GUIの手軽さを素晴らしいと思いましたが、   プログラム部が欠陥に感じたと言うか、プログラム言語じゃないと思いました。 プログラム経験とGUI経験はこれだけです。 他の言語はどーなってるのかとかは一切知りません。

  • C言語で自作GUIツールキットを作成したい

    こんにちは。 初めて、C言語でGUIツールキットを自作したいと考えております。 目的としては、どうやってGTK+などのGUIツールキットは画面にウィンドウやボタンといったものが表示しているのか学習をしたいためです。 最初は、GUIツールのソースをみて解釈しようとしたのですが、C言語自体が独学なので意図が読み取れなかったり、どこで画面を作成しているのか分からず挫折をしてしまいました。 ですので、わかりやすい書籍やWebページがありましたら教えてください。

  • 232C通信の受信について

    232C通信にてVisualBasicの場合、MSCommのOnCommイベントというのがありますが、Cで使えるDLL等で同じようなもの(受信したときに発生する)ってあるのでしょうか?もしくはAPIとかでサンプルソースがあれば教えてください。 宜しくお願いします。

  • Visual Basic 2008にCソースコードを読み込めるか

    Visual Basic 2008にCソースコードを読み込めるか Visual Basic 2008を使っているものです。xxxx.cやyyyy.hなどのCソースファイル、ヘッダーファイルがあります。これらをVisual Basic 2008上に移植したいのですが、簡単できる方法はありますでしょうか。手作業が入るのは止む無しなのですが、極力移植作業を簡略化したいと思ってます。

  • Windows環境下でのGUI作成法

    とある大学生の者です. 現在,FPGAとPCの制御通信をおこなうGUIで作りたいと考えております. しかし,GUIはいままで先輩に少ししか習ったことがなく,ほとんど分かりません. なので,この場をお借りして質問させていただきました. Windows環境下で実行でき,Visual Studio2008 or 2010で作成できるGUI作成法でオススメは何でしょうか? 考慮すべき点としては ・FPGAとの通信にはメーカーのライブラリをインクルードしており,先代のGUIを見る限りVisualC++ によるMFC ・ライブラリは新しいものでないので,C#で動かないかもしれない ・私のプログラム経験はVisual Studio 2008下でC,C++をつかってロボットを動かすレベル などです. 個人的には,C#のFormによるGUIの作成経験があり簡単そうだった記憶があるので,そうしようかと思ってるのですが,ライブラリが対応していない可能性があり,ちょっと… DLL化してもいいのですが,デバックに時間がかかるので避けたい あと,別件になりますがOpenCVによる画像処理環境もGUI化したいという構想があり,C++のほうがよいのかと思ってます. ぐだぐだと長くなってしまい申し訳ないです. ご回答,よろしくお願い致します.

  • C言語について

    今Cの基本?ぐらいまでをマスターしたので次はDOS画面以外での プログラムを書きたいのですがネットで調べたところAPIという奴で作るであっているのでしょうか? また、おすすめのAPIやAPI以外にGUI操作ができるプログラムを書くための何かみたいな物はありますか? まだ、あまりそこらへんの事がわからないので教えてください、お願いします

  • Visual C++2005でMFC形式(?)のDLLを含んだSDKの利用について

    環境:Win2000 SP4 VS2005 pro SP1 現在大学で実験をするためのプログラムを作成しようとしています。 前任者が作った実験用プログラム(Win32API)があり、それに今年購入したハードウェアのSDKを導入することでプログラムの拡張を図っています。 (具体的には今までの測定に追加して動画解析を行おうとしてるのですが・・・) そこでそのSDKの説明書通りにインクルードフォルダを設定し、libファイルを設定しました。 それからソースに説明書通りにヘッダーをインクルードしました。 (このヘッダーファイルをインクルードすることによりSDKに含まれる3つのDLLがすべて読み込まれるらしいです) そこでとりあえずインクルードだけしてコンパイルしてみたところ SDKに含まれるヘッダーファイル中にCStringの構文エラーが出ました error C2061: 構文エラー : 識別子 'CString' 説明書によるとSDKに含まれるDLLのうち1つはwin32DLLで残り2つはMFC標準DLLというもののようです。 プロジェクトのプロパティから文字コードをマルチ、Unicodeとやってみましたがダメでした。 またMFCの利用設定もすべて試してみましたがダメでした。 今までVSをさわったことがなくC言語も少しかじったことがあるだけなので困り果てています。 回答よろしくお願いします。

  • 【VC++6.0】MFCを利用する参考書を教えてください。

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0で過去のソースを改良しているのですが、 (個人的な主観ですが)普通のCあまりにコードが 異なりすぎていて、なかなか作業がはかどりません。 (といっても、C言語も熟知は全然していないです。) そこで、以下の内容を満たすような参考書をご存知で あれば教えて頂きたくお願いします。 *************************** ・初心者向け。 ・VC++6.0、MFCの内容。 ・1つの課題があり、それを順次作り込んでいくような内容。 ・オブジェクト指向の説明がある。  (手続き型とオブジェクト指向型プログラミングの   対比があれば嬉しいです。) ・オブジェクト指向でコーディングされている。 ・デバグの仕方、ソースコードの追い方が若干詳しく書かれてる。 *************************** 以上、よろしくお願いします。

  • Visual StudioのGUIとコマンドラインによるコンパイル

    Visual Studio .NET2003を使ってます. 普段GUIでビルドしているのですが, それをコマンドプロンプトからclとlinkコマンドでやろうと思いました. プロジェクトのプロパティの 「C/C++」と「リンク」それぞれの「コマンドライン」というところで確認できるオプションを それぞれそのままclとlinkの後ろにコピペして実行しました. (clの方はソースファイルも最後に追加して.) ところが,出来上がったDLLの挙動が, GUIでビルドした場合と違っています. (JNIでJavaから呼び出しているのですが, コマンドプロンプトから実行した方は呼び出すときにエラーを出します.) GUIでやろうがコマンドラインからやろうが 同じ挙動になると思っていたのですが, 必ずしもそうではないのでしょうか. 用意した環境の不備など何かの見落としによりありえるのでしょうか. アドバイス頂ける方いらっしゃいましたら,お願い致します.

専門家に質問してみよう