我在dll中有一个名为DoAllWork的c ++函数。 它周围有一个c#包装器。 我在c#包装器中创建了一个委托,我将它作为回调传递给dll中的c ++函数。
我的c#代码如下:
public delegate int UpdateDelegate(int status);
public static int UpdateDelegate(int status)
{
return status;
}
[DllImport(_dllLocation)]
public static extern int DoAllWork( string param1, string param 2,... UpdateDelegate callbackproc);
}
我在c ++头文件中声明了DoAllWork函数,并在cpp文件中实现它,如下所示:
.h文件:
int DoAllWork(string param1, string param 2,... int (*statusfunction(int))
.cpp文件:
int DoAllWork(string param1, string param 2,... int (*statusfunction(int))
{
//do work;
}
然后我们从名为ExportAll.cpp的第三个cpp文件中导出c ++函数DoAllWork 代码如下:
EXPORT_FUNC Init(const char* path)
{
cppLibrary = new CPPLibrary();
return cppLibrary->Init(path);
}
EXPORT_FUNC DoAllWork(string param1, string param 2,...,
int(*statusfunction(int))
)
{
return cppLibrary->DoAllWork(string param1, string param 2,..., ??????);
}
我的问题是我在尝试传递最后一个参数的参数时遇到错误(int(* statusfunction(int)))
在导出带回调函数的c ++函数作为参数时如何传递参数?
由于