如何将C#方法作为回调传递给CLI/C++函数?

gre*_*man 3 c# c++-cli callback

我在C++/CLI中有这样的方法:

void Foo(OnEngineCloseCallback callback);
Run Code Online (Sandbox Code Playgroud)

有这样的回调定义:

typedef void (*OnEngineCloseCallback)( int, String ^ errorMessage);
Run Code Online (Sandbox Code Playgroud)

C++/CLI编译.C#代码如下所示:

static void onCallback( int code, String errorMessage)
{
    System.Diagnostics.Debug.WriteLine(errorMessage);
}
Run Code Online (Sandbox Code Playgroud)

和电话:

Foo(onCallback); // error
Run Code Online (Sandbox Code Playgroud)

"Foo不受语言支持"(错误:CS0570).

那么如何将我的回调传递给CLI/C++呢?

t3c*_*b0t 9

如果你们两个都不打算发表答案,我会这样做,因为我不喜欢没有答案的回答问题......

您必须声明一个公共委托,而不是一个函数指针.基本的how-to文章就在这里.作者:Hans Passant

如何:定义和使用代理(C++/CLI)