c++提供回调函数的接口,给c#调用
c++:
声明:
typedef void(*SelfDetectCb)(int result);// 设备名称,状态(1成功,0失败)
extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback);
实现:
extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback)
{
callback(0);
return TRUE;
}
c#:
声明:
public delegate void SelfDetectCb(int result);
[DllImport("BGISequence.dll", EntryPoint = "Seq_AutoSelfDetect", CharSet = CharSet.Unicode)]
public static extern bool Seq_AutoSelfDetect(SelfDetectCb callback);
调用:
IBGISequence.SelfDetectCb callback = new IBGISequence.SelfDetectCb(CallbackFunc);
IBGISequence.Seq_AutoSelfDetect(callback);
public static void CallbackFunc(int result)
{
// 处理
}
备注:这里的回调函数为public static类型,但若回调函数中需要处理非静态成员,就得声明为private类型。