与GO共享.Net库

时间:2014-02-05 21:48:31

标签: c# .net go pinvoke shared-memory

我正在寻找一种编写使用.NET UI的GO应用程序的方法。或者反过来说,一个调用GO库的.Net应用程序。

无论如何P'Invoke GO,或来自GO的“.Net'Invoke”?

如果没有,表现最佳的替代方案是什么?我现在最好的想法是RPC。

1 个答案:

答案 0 :(得分:2)

可以在进程中托管.NET CLR。理论上你可以编写一个可以从C调用的DLL,它可以托管这样一个CLR。

e.g。 This example project演示了如何在C ++应用程序中创建CLR。

如果将所需状态(例如ICLRRuntimeInfo等)捆绑到一个结构中,您应该能够从用C编写的DLL中调用等效项,并返回“句柄”或其他一些包装到你的Go应用程序。

文档中未完全清楚的是

  • 在另一个进程中加载​​的程序集是否合法执行这些调用(与进程本身相比)
  • C ++是强制性的而不是C(似乎并非如此,但我没有尝试过上述内容,并且在一些示例代码中有一些'可疑的'声明w.r.t vanilla C)