我在 dll 中有一个名为 DoAllWork 的 c++ 函数。它周围有 ac# 包装器。我在 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++ 函数时传递参数吗?
谢谢