2012-04-18 13 views
1

私はC++/MFCでGDALと呼ばれるライブラリを実装しましたが、このプロジェクトではビットマップを描画するためのgdiplusも実装しています。MFCクラスからC#

私はいくつかのint型、文字列型、その他のかなり一般的な型を取り、いくつかの型といくつかのgdiplus :: Bitmapを返すクラスのすべてをカプセル化しました。これらはすべて.dllと.libにうまく収められています。

これで、このライブラリをC#プロジェクトで使用して、フォームのすべての機能を使用したいと考えています。

私は全体の中で答えを探していましたが、チュートリアルや他の有用なドキュメントでは何も特定できませんでした。

しかし、私の目を引く解決策はありましたが、それほどよく説明されていなかったのは、C++/clrラッパーでした。私はC#を参考にしてきましたが、そのクラスをインスタンス化したり、ネームスペースやその他のトラフのインテリジェンスを見たりすることはできません。

誰かが私にその道を助けたり、私にそれほど高く評価されるであろう同様の良いものを与えることができたら。

+1

C++は使用できませんクラスをC#プロジェクトに追加します。ライブラリをCOMオブジェクトにできますか? – Flot2011

+1

"interweb"という用語を非皮肉的に使用するには、あいまいにする必要があります。 –

+0

@ Flot2011 - 私があなたの場合は、答えが:-)であるので、私はあなたの答えにあなたのコメントを書いていたでしょう –

答えて

1

C#プロジェクトでC++クラスを使用することはできません。

2つのオプションがあります。

最初のアプローチは、VC++でマネージラッパーを作成することです。 アンマネージドクラスにアクセスするマネージクラスを作成し、 呼び出しをクラスのさまざまなプロパティ/メソッドに集約します。

は、ラッパーを持っていたら、あなただけの参照を設定することができ、この

を行う方法については、このarticleを参照して、C#2から あなたのクラスを使用します。

2番目の方法は、MFCオブジェクトをCOMオブジェクトにラップすることです。 あなたのインターフェイスを定義し、クラスファクトリを作成してオブジェクトをインスタンス化する必要があります...もっとオブジェクト指向ですが、多くの作業です。tutorial

+0

はCOMは私のクラスをC#または関数だけで使用できますか? –

+0

@LeonCantinあなたはあなたのクラスを使うことができます。 – lorond

+0

優秀!誰もCOMに関する良い文書を持っていますか?私は鉱山に関係のない魔法使いのための小さな非常に特殊なチュートリアルしか見つけることができません。 –

関連する問題