C#用委托调用C++写的dll里面的函数指针
来源:互联网 发布:大数据hadoop原理 编辑:程序博客网 时间:2024/05/14 09:35
程序想实现的功能是:
C++已经封装好了串口发送接收的函数,接收端是使用的一个函数指针,客户端回调实现接收到数据,并且C++的MFC可以调用。现在是想在C#中使用该DLL。
具体做法如下:
第一步,C++DLL中先定义函数指针
typedef void (*pfCallBack)(byte machStatus, byte dataLen, byte* pData, LPARAM port);pfCallBack CallBackFuntion = NULL;
第二步,导出设置接收函数
/***********************************************************************功能:设置从串口接收数据的接收函数参数:函数指针pfCallBackpfCallBack所指向的函数参数为:[out]machStatus机器状态[out]dataLen 返回的数据长度[out]pData 返回的数据内容[out]port 哪个COM口返回值:空************************************************************************/YKYDLL_API void SetReceiveFuntion(void (*pfCallBack)(byte machStatus, byte dataLen, byte* pData, LPARAM port)){CallBackFuntion = pfCallBack;}
第三步,C#客户端调用该DLL
//定义一个委托,其返回类型和形参与方法体的返回类型形参一致 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]//一定要加上这句,要不然C#中的回调函数只要被调用一次,程序就异常退出了!!! public delegate void delRecvFun(byte machStatus, byte dataLen, byte[] pData, int port);
delRecvFun fun;//声明一个委托变量
第四步,在打开串口的地方,给委托变量赋值,并调用一次。
fun = new delRecvFun(recvFromCom);//给委托变量赋值 APIDll.SetReceiveFuntion(fun);//用委托当做函数指针作为参数传入
0 0
- C#用委托调用C++写的dll里面的函数指针
- C#调用C写的DLL二级指针传递方法
- C#调用C写的DLL二级指针传递方法
- C#里面的委托,说白了就是函数指针
- C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
- 【转】C#传委托给C的函数指针调用问题
- c#调用C++写的DLL,传递二维指针参数
- C#调用C++dll 中具有高维指针参数的接口函数
- C#下调用C写的dll的例子
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- C#调用c++Dll结构体数组指针的问题
- c#调用C++ 写的DLL(带CALLback函数)
- C#中的委托(为什么C#调用dll的回调函数用委托)
- 调用游戏dll里面的汇编函数
- C# 委托 C函数指针
- 11个与众不同、令人叹为观止的单页网站
- 做什么运动可以排毒养颜
- 关于VC++的增量链接(Incremental Linking)
- IOS didReceiveMemoryWarning 的那些事
- 2014年4月操作系统份额:Windows XP仍然在26%以上,Linux微涨
- C#用委托调用C++写的dll里面的函数指针
- MAC安装python模块碰到“error: command 'cc' failed with exit status 1”解决办法
- 关于“To be, or not to be”的一个小话题
- 20140505收盘小结
- Eclipse快捷键功能
- 车祸是怎么发生的 不论你是否开车都该看看!
- nginx配置状态监测
- windows server 2008 iis和ftp服务器搭建
- NETGEAR为深圳华强电子世界构云时代办公信息化