首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#接收DLL回到的字节流。

2013-01-18 
C#接收DLL返回的字节流。。。C++封装的DLL导出回调函数,回调函数返回字节流指针和长度,C#调用DLL.第二次进入

C#接收DLL返回的字节流。。。
C++封装的DLL导出回调函数,回调函数返回字节流指针和长度,
C#调用DLL.

第二次进入回调函数退出时,出错。

//C++函数原型: 
int cbFun(int *pOutData, int * outDataLen)

//C#调用接口函数
public delegate int LPONGETMSG(ref IntPtr pOutData, ref int outDataLen);

byte[] pBuf = new byte[maxSize];

public int cbFun(ref IntPtr pOutData, ref int outDataLen)
{           
 Marshal.Copy(pOutData, pBuf ,0 ,outDataLen);
 // Marshal.FreeHGlobal(pBuf);
 return 0;
}

[解决办法]
委托实例是不是定义的临时变量吧,定义成全局变量;
因为临时变量会被NET的进制自动回收,导致C++内部错误;
[解决办法]
指针前不能加ref,不然要被C++给破坏指针值的。

热点排行