2014-02-05 99 views
3

我正在尋找一種方法來編寫使用.NET UI的GO應用程序。或者相反,一個調用GO庫的.Net應用程序。與GO共享.Net庫

無論如何P'Invoke GO,或者「.Net'Invoke」從GO?

如果不是,什麼是表現最好的替代方案?我現在最好的想法是RPC。

+1

我認爲這很難做到。 cgo可以在適當的情況下調用C(和C++),但不能調用.NET。有一些像https://github.com/niemeyer/qml這樣的東西可以在Windows上運行,並綁定到http://go-lang.cat-v.org/library-bindings上列出的不同GUI庫。 – twotwotwo

+0

對於一種非常有效的替代方法,Go適合並經常用於服務器;您可以擁有一個.NET客戶端,該客戶端啓動並連接到在後端執行工作的本地Go服務器。 – twotwotwo

+1

@twotwotwo如果看起來沒有更好的方法,那麼我最終可能會這樣做。 –

回答

2

可以在進程中託管.NET CLR。理論上你可以編寫一個可從C調用的DLL,它可以託管這樣一個CLR。

例如This example project演示了在C++應用程序內創建CLR。

如果您將所需狀態(例如ICLRRuntimeInfo等)捆綁在一個結構中,您應該能夠從C編寫的DLL中調用等價物,並返回一個「句柄」或其他一些包裝到您的去應用程序。

的不是從文檔完全清楚是

  • 無論是合法的,在另一個進程中加載​​的組件來執行這些調用(與程序本身)
  • 無論C++是強制性而不是C的(似乎不是這種情況,但我沒有嘗試上述做法,並且在某些示例代碼和香草C中有一些'可疑'聲明)