2009-08-19 19 views
1

私はC#プログラマーで、ネイティブでは紹介しません。 私はネイティブDLLを持っています。&私のプロジェクトでそれを使用していますが、いくつかのタイプは管理コードで実行できません。 Native(C++)でDLLを準備します。イベントが発生したときに管理コードを認識したいときに使います。どうやってやるの?ネイティブDLLを作成

答えて

1

ネイティブDLLのAPIを使用して、イベントが発生したときに呼び出されるコールバックとして関数ポインタを登録できる場合は、通常のC#デリゲートを関数ポインタ(Marshal.GetFunctionPointerForDelegate)にマーシャリングし、 P/Invoke。

1

ネイティブイベントをC#コードで処理したい場合は、C++ネイティブDLLとC#DLLの間の中間層として機能するC++/CLI DLLを作成することをお勧めします。これにより、中間ライブラリ内のイベントを処理して渡すことができ、管理対象DLLによって再度キャプチャされるようになります。

もう1つの方法は、ネイティブDLLをCOM DLLとして書き込んでそこからCOMディスパッチイベントを呼び出すことです。このCOM DLLの相互運用機能を作成すると、C#DLLに直接イベントを取り込むことができます。しかし、COMプログラミングの初心者であれば、このルートは非常に急な学習曲線になります。

関連する問題