基本上我有一羣非託管VC++靜態庫。而使用它的VC++ GUI應用程序則基於MFC。 目標是用C#中完成的應用替代GUI應用,而使用所有相同的靜態庫。 問題是,如果這甚至是可能的,如果是的話,那麼什麼是正確的方式來實現呢?非託管vC++靜態庫和C#GUI應用程序
建議,任何人? 謝謝。
基本上我有一羣非託管VC++靜態庫。而使用它的VC++ GUI應用程序則基於MFC。 目標是用C#中完成的應用替代GUI應用,而使用所有相同的靜態庫。 問題是,如果這甚至是可能的,如果是的話,那麼什麼是正確的方式來實現呢?非託管vC++靜態庫和C#GUI應用程序
建議,任何人? 謝謝。
Rob是正確的 - 您可以完全在C++/CLI中完成,但我們發現將一些本機類包裝到託管的WinForms用戶控件類中非常有用。此託管類包含本機類的一個實例,不僅在方法調用中編組數據(如字符串),而且還將本機回調(用boost :: signal實現)轉換爲.NET事件。此信號事件轉換的整個解決方案在this question中詳細說明。 .NET WinForms用戶控件還捕獲本地異常並將它們重新拋出爲託管異常,並且還將非.NET接口(返回迭代器的方法)翻譯爲更多.NET風格的接口,您可以在其中閱讀this question。然後,我們可以直接在WPF應用程序中使用.NET類。請注意,如果您將它封裝爲.NET類,它將不得不從DLL中使用C#。
訣竅還在於GUI應用程序必須從這些靜態庫中擴展一些對象,才能對從庫調用的某些回調方法作出反應。這會工作嗎? – Ma99uS 2008-10-07 14:32:50