我的板上有 .NET 应用程序和 C 代码。.NET 应用程序将以回调函数作为参数调用 C 函数(监视按钮是否按下?)并结束其任务。我的 C 应用程序将监视按钮,当按下按钮时,必须调用回调函数(.NET)。如何从我的 C 代码调用该回调函数(.NET)?
问问题
59 次
1 回答
1
在函数的 C 定义中,回调应表示为函数指针。为简单起见,我们假设回调返回void
并且没有参数。
void NativeMethod(void (*pCallback)(void)) {
...
}
一旦调用此代码,C 代码将有一个简单的函数指针。它可以在需要时调用它,并将转换为 .Net 代码。
在 .Net 方面,我们需要定义函数指针类型的委托和用于调用 C 代码的 PInvoke 存根。
delegate void CallbackFunc();
[DllImport("the_native_dll")]
static extern void NativeMethod(
[MarshalAs(UnmanagedType.FunctionPtr)] CallbackFunc cb)
现在 C# 代码可以NativeMethod
使用标准委托通过函数调用本机代码
于 2013-08-23T05:27:54.853 回答