我有一个C++/cli类库,它包装了一些本地代码。一切都很好,我正在编写用于测试和使用示例的C#代码。其中一个C++方法对文件进行处理(可能需要一些时间),因此我想使用回调函数向C#调用者报告进度。我已在C++库中声明了一个委托,如下所示:
public delegate int ProcListCB(int state, int status, long count);
以下是使用该库从代码设置委托的函数:
public ref class MyClass
{
public:
void SetProcListCallback(ProcListCB ^ cb)
{
HouseKeeping::procListCallback = cb;
}
};
在C#中,我有以下内容:
ProcListCB procListCB;
public int ProcessListCallback(int state,int status,long count)
{
int rtnVal = 0;
// some code...
return (rtnVal);
}
private void Process_Click(object sender, EventArgs e)
{
VerifySq vsq = new VerifySq();
ProcListCB cb = new ProcListCB(ProcessListCallback);
vsq.SetProcListCallback(cb);
...
}
我遇到了编译错误:
error CS0123:'VerifySqListGui.MainWin.ProcessListCallback(int, int, long)' 的重载不匹配委托 'AccuMailCoreVerifySq.ProcListCB'
我搜索了一段时间,但还没有找到答案(显然)。 我猜想是某个函数调用约定不匹配,但我不知道具体细节。 希望能得到任何帮助...
long
并不够长,你可能需要使用long long
。它更长 :) - Hans Passant