c#调用c++的回调函数
2015-09-11 17:20
357 查看
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类型。
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类型。
相关文章推荐
- c++ --> cin和cout输入输出格式
- C++ 文件读取
- C语言scanf函数详细解释
- 黑马程序员-----------C语言基础-----------C语言(理论)
- C语言将文件读入内存
- c++模板类学习
- 黑马程序员-----------C语言基础-----------预处理指令
- c语言的错误及警告对照表———— 在遇到时可以对照查看
- 【C++】返回单链表的第k个结点
- C++之多态性与虚函数
- 黑马程序员-----------C语言基础-----------结构体·枚举
- STL List容器详解
- stray'\241'in program在C++语言中是什么错误
- C++编程笔记 二(继承与多态)
- C语言文件操作函数
- c++实现顺序存储的队列
- C++编程中变量的声明和定义以及预处理命令解析
- EXCEL列序号的加法
- C++实现LRU(最久未使用)缓存算法
- VC++, CString的各个函数用法详解与小示例