2011-10-21 13 views
1

私は静的コールバック機能を持たない静的Cライブラリを持っています。このコールバックを登録するクライアントプログラムは、カメラからビデオデータを取得します。C++/CLIでCコールバックをラップする

これでC++/CLIでWrapper(DLL)を書いています。このWrapper DllはC#アプリケーションで使用されます。

C#コードがそれを登録し、そこからビデオデータを取得できるように、C++/CLIでコールバックを実装する方法。だからあなたのCライブラリでMyCallbackを登録

public delegate void MyDelegateType(); 

public ref class MyDispatcherClass 
{ 
    public: 
      static MyDelegateType^ MyDelegate; 
} 

// native function, outside of managed class!! 
static void MyCallback(/*...*/) 
{ 
    if(MyDispatcherClass::MyDelegate!=nullptr) 
     MyDispatcherClass::MyDelegate(/* do some type mapping here if needed */); 
} 

:C++/CLIで

+0

[C++/cli pass(管理対象)デリゲートからアンマネージコードへ]可能な複製(http://stackoverflow.com/questions/2972452/c-cli-pass-managed-delegate-to-unmanaged-code) –

答えて

1

、あなたは管理デリゲートを呼び出して、(Cライブラリからコールバックとして働くことができるネイティブC署名付き)静的な機能を有することができますC#デリゲートをMyDispatcherClass::MyDelegateに登録すると、完了です。

+0

@ Doc Brown:C#で代理人を呼び出す方法。 –

関連する問題