2011-06-28 7 views
2

最適な方法は何ですか? .NETコンポーネント(.NET 3.5で書かれたクラス)をCOMにラップし、Win32でインスタンス化しますか?コンポーネントにはイベントがあるため、Win32 APIアプリケーションへのコンポーネント駆動型コールバックをサポートする必要があります。純粋なWin32 APIアプリケーション(フレームワークなし)、.NETコンポーネントへのアクセスが必要

答えて

1

あなたの仕様を満たす唯一のソリューションはCOMです。

+0

これは正しくありません。 C++/CLIラッパーも動作します。 Win32アプリケーションは、ラッパーが呼び出すための関数ポインターをラッパーに渡す必要がありますが、正常に動作します。あまりにも多くの作業が必要になりますが、ラッパーdllはRPCなどの他のメソッドを使用することもできます。 – dschaeffer

+0

@dscaeffer C++/CLIラッパーは動作しますが、OPは純粋なWin32が必要でした。 –

+0

私は彼がアプリケーションのために純粋なWin32を望んでいると言っていたと信じていましたが、そうでない場合は正しいです。彼が元のコンポーネントソースにアクセスできない場合、COMラッパーも純粋なWin32ではありません – dschaeffer

1

あなたの好みと.NETコンポーネントの設定方法によって異なります。

COMでそれをラップすると、うまく動作し、通常は素晴らしいオブジェクトベースのインターフェイスが得られます。また、インターフェイスが複雑な場合は、タイプライブラリが得られます。

単純なインターフェイスを持つAPIの場合、通常はC++/CLIでラッパーを作成することをお勧めします。ラッパーは.NETコンポーネントに直接アクセスでき、__declspec(dllexport)を使用してラッパー関数を簡単にエクスポートできます。 COMを設定するよりも、このタイプのラッパーをセットアップする方が早い場合があります。ここで

あなたは便利かもしれないリンクのカップルです:

http://www.codeproject.com/KB/dotnet/bridge.aspx

How to use managed code from unmanaged code?

関連する問題