私は静的コールバック機能を持たない静的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で
[C++/cli pass(管理対象)デリゲートからアンマネージコードへ]可能な複製(http://stackoverflow.com/questions/2972452/c-cli-pass-managed-delegate-to-unmanaged-code) –