vc++ dll中有回调函数。c#调用的问题。
HIGE6 2008-03-25 11:51:47 vc++ dll中有回调函数。c#中对应声明了回调函数。在vc++ dll中为什么不能得到c#回调函数的返回值。并且多调用几次,vc++ dll就会出现异常?
大概代码:
c#中
[DllImport("ObjectEvaluationManager.dll")]
extern static Int32 Calculation(CallBack GetStateCallBack, IntPtr handle);
public delegate Int32 CallBack(Int32 State, IntPtr handle);
CallBack GetStateCallBack = new CaluculationCallBack(GetState);
//回调函数体
public Int32 GetState(Int32 State, IntPtr handle)
{
return 0;
}
//调用vc++ dll中函数
Calc(GetStateCallBack, mainForm.Handle);
vc++ dll中:
typedef int (*CaluculationCallBack)(int in_Status,void* in_UserData);
void CDll::Calc(CallBack CalcState, void* handle)
{
//不能得到c#回调函数的返回值。并且多调用几次,就会出现异常
int iRet = CalcState(1, handle);
}