使用回调函数作为参数导出C ++函数

时间:2012-11-01 23:38:30

标签: c# c++ callback

我在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 ++函数作为参数时如何传递参数?

由于

0 个答案:

没有答案
相关问题