2011-03-06 82 views
4

我正在使用C++/CLI Wrapper從C#框架( - > managed)訪問純粹的C++庫( - > unmanaged)。我想建立一種機制,使C++庫能夠將關於其狀態的信息推向框架。在我的理解中,這意味着我必須在某個時候至少從非託管代碼調用託管函數。這是可能的,我怎麼能做到這一點?如何將數據從非託管代碼推送到託管代碼?

非常感謝您的幫助!

最好的問候, 雅各布

回答

7

使用委託讓非託管代碼調用託管方法。 Marshal :: GetFunctionPointerForDelegate()創建一個存儲過程,負責調用實例方法。您可以將返回的指針轉換爲可由非託管代碼使用的函數指針。

你會在this answer找到完整的代碼示例。

+0

謝謝你,我會盡力解決這個問題。 – 2011-03-07 07:49:17

2

我會建議使用(管理)事件這一點。你可以讓你的C++包裝調用你的C++/CLI生成的類來引發事件。

該事件可以很容易地從C#端訂閱,並像任何其他基於C#的事件一樣使用。

+0

感謝您的有趣建議! – 2011-03-07 07:48:54