c#调用c++的回调函数

本文介绍了一个C++提供回调函数接口给C#调用的例子。C++中定义了回调函数类型并通过DLL导出,C#中声明相应的委托类型并导入C++的DLL接口进行调用。该示例展示了跨语言回调的基本实现方式。

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类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值