我的主板上有 .NET 应用程序和 C 代码。 .NET应用程序将使用回调函数作为参数调用C函数(观察按钮是否按下?)并结束其任务。我的 C 应用程序将监视按钮,当按下按钮时,必须调用(.NET 的)回调函数。 如何从我的 C 代码中调用(.NET 的)回调函数?
最佳答案
在函数的 C 定义中,回调应表示为函数指针。为了简单起见,我们假设回调返回 void
并且没有参数。
void NativeMethod(void (*pCallback)(void)) {
...
}
一旦调用此代码,C 代码将具有一个简单的函数指针。它可以在需要时调用它,并将转换为 .Net 代码。
在 .Net 方面,我们需要定义函数指针类型的委托(delegate)和用于调用 C 代码的 PInvoke stub 。
delegate void CallbackFunc();
[DllImport("the_native_dll")]
static extern void NativeMethod(
[MarshalAs(UnmanagedType.FunctionPtr)] CallbackFunc cb)
现在,C# 代码可以使用标准委托(delegate)通过 NativeMethod
函数调用 native 代码
关于.net - 从处理器C代码调用.NET应用程序的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395257/