C++的回调函数中有一个参数是,是返回一个字符串,原则如下:
typedef void (*TDataEvent)(char *AData ,int ALen);
其中char *AData是从DLL中返回一个字符串,串的内存已经在DLL中分配了 下面中我在C#中定义的委托
public delegate void TDataEvent(Byte[] AData, int ALen); 下面是回调函数的设置代码:
Event = new clReceivelDllPoxy.TDataEvent(getDate);
ReceDllPoxy.AddServer(1024, Event, 2);
其中 Event是上面委托的实例,我定义成一个成员这样就不会被自己释放 下面是C#中回调函数的实现
public void getDate(byte[] AData, int ALen)
{
//为什么这里AData的维数只有1,也就是说只收到一个字节????
}
typedef void (*TDataEvent)(char *AData ,int ALen);
其中char *AData是从DLL中返回一个字符串,串的内存已经在DLL中分配了 下面中我在C#中定义的委托
public delegate void TDataEvent(Byte[] AData, int ALen); 下面是回调函数的设置代码:
Event = new clReceivelDllPoxy.TDataEvent(getDate);
ReceDllPoxy.AddServer(1024, Event, 2);
其中 Event是上面委托的实例,我定义成一个成员这样就不会被自己释放 下面是C#中回调函数的实现
public void getDate(byte[] AData, int ALen)
{
//为什么这里AData的维数只有1,也就是说只收到一个字节????
}
解决方案 »
- 求助:事件ID1309
- c# 截图的问题
- asp.net如何实现能读取客户端access数据库
- 一个困扰很久的问题?解决立即结贴,从不拖结.
- C#调用VC++编写的标准DLL函数,DLL函数运行过程中如何通知信息到C#程序
- 如何将事务执行情况写入数据库中??
- 通过代理服务器发出http请求,总是出现400错误,内有抓包数据
- 如何在EXCEL中点击按钮插入日期?
- socket服务器端处理客户端发来的数据问题
- BackGroundWorker后台处理,更新DataGridView, 发生IndexOutOfRangeException,高分烦请这方面的高手解答
- dataTable列排序混乱问题
- 请高手帮忙二个大容量dataset数据比较速度问题
How can you count on C# to give you the AData.Length information?So, You need to do it yourself:public void GetDate(IntPtr pData, int length)
{
string data = Marshal.PtrToStringAnsi(pData, length );
}
Marshal.Copy(pData, bytes, 0, bytes.Length); // remember it is a copy