1

我在 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++ 函数时传递参数吗?

谢谢

4

0 回答 0