2011-08-14 176 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