如何通过C#方法作为对CLI / C ++函数的回调? [英] How to pass C# method as a callback to CLI/C++ function?

查看:87
本文介绍了如何通过C#方法作为对CLI / C ++函数的回调?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have such method in C++/CLI:

void Foo(OnEngineCloseCallback callback);

具有这样的回调定义:

typedef void (*OnEngineCloseCallback)( int, String ^ errorMessage);

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

The C++/CLI compiles. The C# code looks like this:

static void onCallback( int code, String errorMessage)
{
    System.Diagnostics.Debug.WriteLine(errorMessage);
}

并致电:

Foo(onCallback); // error

该语言不支持Foo(错误:CS0570)。

"Foo is not supported by the language" (error: CS0570).

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

So how can I pass my callback to CLI/C++?

推荐答案

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


您必须声明一个公共委托,而不是一个函数指针。基本的操作方法文章在这里。由Hans Passant提供的

You must declare a public delegate, not a function pointer. Basic how-to article is here. by Hans Passant

如何:定义和使用委托(C ++ / CLI)

这篇关于如何通过C#方法作为对CLI / C ++函数的回调?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆