Hello Go Lang和C#gurus,
美好的一天。 我想问一下你是否有人试过从Go程序调用C#DLL函数(类库类型)?
我做了一些初步研究并看到了这些文章:
- https://github.com/golang/go/wiki/WindowsDLLs
- https://stackoverflow.com/questions/27849137/golang-call-windows-dll-functions
但这些是从C Win32实现创建的DLL。 我试着搜索加载到Go程序中的C#DLL,所有这些都会告诉你需要一个C ++ / C(Win32)包装才能在Go程序中调用它。
另外,上面的链接会告诉你Go正在期待" C"声明我认为(类型为__declspec)或类似(例如WINAPI)。
在这种情况下我们可以完全跳过C / C ++包装器并在Go中直接调用C#DLL函数吗?
非常感谢您的启发性意见和投入=)!
由于
答案 0 :(得分:3)
选项1 将您的.NET DLL转换为this之类的COM组件,然后您可以按照your first link中的步骤从golang调用它。请记住,此选项仅适用于Windows。
选项2 将DLL包装在一个简单的C#控制台应用程序中,并使用os/exec在golang中调用该应用程序。如果您的C#DLL是跨平台的,那么您的最终程序仍然是跨平台的。
这两个选项都需要C#的基本知识,要么创建COM组件,要么编写控制台应用程序来调用DLL。 IMO后者更容易。