2009-08-22 45 views
7

這個問題以前已經問過,但我從來沒有找到一個真正令人滿意的解決方案 -從本地C++調用C#,沒有/ clr或COM?

我有用C#編寫的類庫,我想從傳統的本地C++應用程序中調用它。主機應用程序是真正的本機,在Windows上編譯,它是一個控制檯應用程序。那麼,如何讓它調用C#類庫,假設在Windows上使用Microsoft .NET,在Linux上使用Mono。

我已經看過SWIG和Windows上的COM接口封裝,但有沒有標準的公認的解決方案,跨平臺的作品?即通用的,適用於Microsoft .NET和Mono,一次寫入就可以在任何地方使用。

解決方案應該將完整的類接口從C#域公開到C++域。

類似的問題,只專注於Windows的解決方案,例如 -

Call C# methods from C++ without using COM

+0

你必須問單聲道傢伙是否以及如何導出。 – 2009-08-22 00:39:10

回答

5

如果你想這樣做跨平臺的,我會建議用100%的單方法去。

Mono有一個乾淨的Embedding API,它適用於Linux和Windows。

+0

好的答案,在Windows上嵌入Mono並不真正是我一直在尋找的東西,而且它看起來都非常手動。您必須編寫大量的鍋爐板代碼才能將完整的接口展示給庫,它看起來耗時且脆弱,讓我想起了JNI。我想知道是否有某種自動化的方式,如SWIG或只是暴露一個COM接口。 – titanae 2009-08-22 00:51:55

+0

COM運行良好,但在Linux上不太好。 SWIG只適用於其他方式......對不起。 – 2009-08-22 16:35:27