Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Share .Net libraries with GO

I'm looking for a way to write a GO application that use a .NET UI. Or the other way around, a .Net application that calls into a GO library.

Is there anyway to P'Invoke GO, or ".Net'Invoke" from GO?

If not, what is the best performing alternative? The best idea I have right now is RPC.

like image 916
Austin Harris Avatar asked Dec 29 '25 20:12

Austin Harris


1 Answers

It is possible to host a .NET CLR in-process. You could in theory write a DLL callable from C, which could host such a CLR.

e.g. This example project demonstrates creating a CLR inside of a C++ application.

If you bundle together the required state (e.g. ICLRRuntimeInfo et al.) into a struct, you should be able to call the equivalents from a DLL written in C, and return a 'handle' or some such other wrapper to your Go application.

What is not entirely clear from the documentation is

  • Whether it's legal for an assembly loaded in another process to perform these calls (vs. the process itself)
  • Whether C++ is mandatory instead of C (doesn't seem to be the case, but I have not attempted the above and there are some 'suspicious' declarations in some of the example code w.r.t vanilla C)
like image 144
David Roberts Avatar answered Jan 01 '26 10:01

David Roberts



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!