读书人

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

发布时间: 2013-01-18 10:22:42 作者: rapoo

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++给破坏指针值的。

读书人网 >C#

热点推荐