- PR -

C++とC#の併用について

1
投稿者投稿内容
ミズー
会議室デビュー日: 2006/10/25
投稿数: 8
投稿日時: 2009-02-05 10:20
はじめまして、
以前VC++6.0のMFCを使って作成した画像処理ソフトをC#(.net2005)を使って再作成したいと考えております。
BMPファイルをバイナリデータとして読み込み、画像処理を行った後に、保存するという単純なプログラムです。

単純に、C++、C#どちらか一つの言語では作れそうですが、画像処理の高速化を考慮して、画像処理の内部的な部分
はC++で作成し、それ以外は、作業効率を考えてC#で作成したいと考えております。

今考えているのは、C#で作成したGUIからイベントを発生させ、ファイルを選択。その後、C++で作成した画像処理
プログラムでバイナリデータをを画像処理し、C#で作成した画面に処理結果を表示という流れです。


そこで、複数質問させて頂きます。

1)VC++6.0で作成したプログラムをできるだけ手を加えることなく活用したいと考えていて、連携を取るにはDLL化することぐらいしか
思い浮かばないですがそれ以外の方法をご存じでしょうか?上記のような使い方を考えた場合、やはりC++.netで再作成
が必要ですか?

2)C++で画像処理したバイナリデータをそのままC#に持ってくる方法が、どうしても思い浮かばないのです。C++でファイルとして
一度保存して、C#で読み込むのでは、速度が遅く不便だと感じます。バイナリデータをC++とC#でやり取りすることは、
可能でしょうか?

3)皆様、VC++6.0からVS.netへ移行をされておられると思いますが、実際どのように移行しているのか聞きたいです。
実用的な方法や、他の方がされている方法に非常に興味があります。

プログラミングの経験が浅く、わかりにくい説明で申し訳ありませんが、ご回答お待ちしております。

宜しくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2009-02-05 11:05
引用:

ミズーさんの書き込み (2009-02-05 10:20) より:
1)VC++6.0で作成したプログラムをできるだけ手を加えることなく活用したいと考えていて、連携を取るにはDLL化することぐらいしか
思い浮かばないですがそれ以外の方法をご存じでしょうか?上記のような使い方を考えた場合、やはりC++.netで再作成
が必要ですか?


VC++6.0でDLL化したり、あるいはCOMコンポーネントとしたり、方法は多々あると思います。一番容易なのはC++.NETでマネージドDLLとしてビルドしなおすことでしょう。

引用:

2)C++で画像処理したバイナリデータをそのままC#に持ってくる方法が、どうしても思い浮かばないのです。C++でファイルとして
一度保存して、C#で読み込むのでは、速度が遅く不便だと感じます。バイナリデータをC++とC#でやり取りすることは、
可能でしょうか?


Imageクラスとして受け渡すなり、Bitmapとして受け渡すなり、都合のよい方法を取ればよいと思います。何を問題視していますか?

引用:

3)皆様、VC++6.0からVS.netへ移行をされておられると思いますが、実際どのように移行しているのか聞きたいです。


既存の設計を生かしたまま移行するなら、私はそのままC++&MFCで作ります。
一から再設計が許されるなら、C#に移行します。

既存の画像処理クラスはCDCやCBitmap、DIBビットマップとの互換性を意識した設計になっているはずです。そのままではGDI+やImageクラスでは使いにくいでしょう。一から再設計しないと継ぎ接ぎだらけの保守性の悪いアプリケーションになってしまうと思います。
ミズー
会議室デビュー日: 2006/10/25
投稿数: 8
投稿日時: 2009-02-05 11:37
甕星さま、素早いご回答ありがとうございます。

>VC++6.0でDLL化したり、あるいはCOMコンポーネントとしたり、方法は多々あると思い>ます。一番容易なのはC++.NETでマネージドDLLとしてビルドしなおすことでしょう。
>Imageクラスとして受け渡すなり、Bitmapとして受け渡すなり、都合のよい方法を取れ>ばよいと思います。何を問題視していますか?

DLLで関数をコールしたり、C++からC#へのデータの受け渡しをする際に、時間がかかってしまうのではないかと心配しております。MFCで作成した場合と比較して、ファイル出力や画面表示までに時間がかかってしまっては、C#&C++併用で作成する意味がなくなってしまうと考えております。

サイズの大きい画像ファイルを多数扱うため、少しでも処理速度を早く(現状よりも遅くならないように)したいと考えているため、処理速度を重要視しております。



1

スキルアップ/キャリアアップ(JOB@IT)