C++ Dll回调C#方法,Dll中要将字节数组传递给回调方法
来源:互联网 发布:客户分布地图制作软件 编辑:程序博客网 时间:2024/06/06 19:02
转载:http://www.cnblogs.com/Eashion/archive/2008/12/18/1357681.html
在VC中封装的网络通信模块,在异步接收到数据时需要将内容传递给C#中的消息处理函数,于是便出现了如标题所说的情况。
C++的回调函数中有一个参数,是处理接收到的字节流的回调函数指针,定义基本如下:
typedef void (*fpDataReceived)(char *data ,int len);
其中char *data是从DLL中返回的字节流,空间已经在DLL中分配了。
下面是在C#中定义的委托
public delegate void OnDataReceived(byte[] data, int len);
下面是C#中回调函数的实现
public void getData(byte[] data, int len)
{
//结果这里data的维数只有1,也就是说只收到一个字节。
}
问题解决如下:
1、using System.Runtime.InteropServices;
2、按如下方式定义委托:
public delegate void OnDataReceived(IntPtr pData , int len); //pData是个指针地址,对应上面的char*指针data
3、回调函数的实现如下:
public void getData(IntPtr pData , int len)
{
byte[] data = new byte[len];
Marshal.Copy(pData, data, 0, len);
//接着处理 data 里的内容
}
- C++ Dll回调C#方法,Dll中要将字节数组传递给回调方法
- C# 传递图片给C++dll
- C#调用C写的DLL二级指针传递方法
- C#调用C写的DLL二级指针传递方法
- C#调用C++dll方法,char*类型之间的传递
- C#调用C++DLL的方法
- C#动态调用c++DLL的方法
- C#动态调用c++DLL的方法
- C#调用DLL方法
- C#调用dll方法
- C#调用Dll方法
- C#调用dll方法
- 传递VB数组给DLL中的函数
- dll传递string实现方法
- dll传递string实现方法
- dll回调给java的函数参数需要有字节数组类型参数的处理
- C#返回byte[]给dll的方法,寻求帮助
- C# 调用C++dll string传递问题
- 【日常】2013简单总结 + 技术总结
- Java环境变量的配置
- Tomcat 7最大并发连接数的正确修改方法
- permanent gc
- AVL
- C++ Dll回调C#方法,Dll中要将字节数组传递给回调方法
- 让GC扫面持久区permanent generation
- Hadoop 归档 和HIVE 如何使用har 归档 文件
- http_load压测响应时间问题
- EasyUI 加入数字框
- Remove Nth Node From End of List
- erlang --进程生成测试
- BOOST Log 使用 Unicode
- C#使用LitJson解析JSON