调用C++dll,需要传入一个函数指针,函数参数含有数组指针,用于传回数据,怎么老说我访问内存非法呀.
C++ dll代码
回掉函数类型: void callback(BYTE *data,int nlen)
//DLL 设置回调函数
void SetCallBackFunc(CALL_BACK_FUNC callback)
{
m_callback = callback;
}
//dll 调用回掉函数向C#传回数据
void StartDll()
{
BYTE btData[100];
for(byte i = 0 ;i < 100;i++)
{
btData[i] = i;
}
m_callback(btData,100); //将数据通过回掉函数传回C#,此处出错.
}
/////////////////////////
//C#代码
//声明委托函数,引入dll代码
//
///
public static void startCsharp()
{
SetCallBackFunc(GetData);
}
public static void GetData(BYTE []btData,int len)
{
//处理data数组
}
现在的问题是,每次dll里面一掉用回掉函数,向C#代码传入数据时,C#能处理数据,但一返回dll,就崩溃了,内存错误.请问各位老大有谁碰到过这个问题?
有兴趣的朋友可以自己写个简单的代码试验一下.dll用C++写,回调函数参数有指针用于传送数据的.