私は C# プログラマーで、Native とは関係ありません。私はネイティブ DLL を持っています。プロジェクトでそれを使用する予定ですが、一部の型はマネージ コードでは実用的ではありません。ネイティブ (C++) で DLL を準備します。イベントが発生したときに、マネージ コードを認識します。どうやってやるの?
2 に答える
1
C# コードでネイティブ イベントを処理する場合、最善の策は、C++ ネイティブ DLL と C# DLL の間の中間層として機能する C++/CLI DLL を作成することだと思います。こうすることで、中間ライブラリでイベントを処理し、マネージ DLL によって再度キャプチャされるように渡すことができます。
もう 1 つのオプションは、ネイティブ DLL を COM DLL として記述し、そこから COM ディスパッチ イベントを発生させることです。この COM DLL の相互運用機能を作成することにより、イベントを C# DLL で直接キャプチャできます。ただし、COM プログラミングに慣れていない場合、このルートは非常に急な学習曲線になります。
于 2009-08-19T06:22:20.980 に答える
1
ネイティブ DLL の API で、イベントが発生したときに呼び出されるコールバックとして関数ポインターを登録できる場合は、通常の C# デリゲートを関数ポインター ( Marshal.GetFunctionPointerForDelegate
) としてマーシャリングし、P/Invoke を介してマネージ デリゲートを登録するだけです。
于 2009-08-19T06:43:43.653 に答える