2011-08-14 179 views
1

我正在写Monochouch中的应用程序,它也使用了C++库,所以我一直使用p/inoke从C#调用C++函数来执行各种操作。然而,出现了一些我希望C++代码调用C#函数的场景。从C++调用C#函数?

因此,像:

void CPlusPlusFunction(Pointer* stuff) 
{ 
    //do stuff 

    CSharpFunction(*stuff); 
} 

这是可能的,如果是我该怎么做呢?或许不是调用一个函数,而是可以将一个委托传递给C++来调用,如果可以的话,那将如何工作?我真正想做的就是在某个函数中立即将一些信息传递给C#。

感谢您的帮助!

回答

2

您可以要求C#从共享库中导出函数,就像本机库可以执行的那样。另外,C#可以将委托转换为相同签名的函数指针,您可以将它们传递给C++。

+0

您能否给我们提供一个简单的例子? –

+0

下面是C#如何使用委托(回调EnumWindowsProc)并将其作为IntPtr传递给C函数EnumWindows()的示例。 https://code.msdn.microsoft.com/windowsapps/Enumerate-top-level-9aa9d7c1 – Elmue