【问题标题】:Is there a way to wrap a Go library in .Net有没有办法在 .Net 中包装 Go 库
【发布时间】:2015-01-22 13:14:58
【问题描述】:

我在这里和那里看到 Go 就像现代 C/C++(意思是:具有现代语法和内存管理,但速度差不多)。
我有兴趣利用这种语言的强大功能,在我们的 .Net 应用程序中包含一个图像处理库。

但这引发了将 Go 库包装在 .Net shell 中的问题。我已经使用 C++/CLI 成功地包装了一个 C 库;有没有办法用 Go 做类似的事情?

我不想使用我之前尝试过的 Swig,它非常糟糕而且大部分时间都不起作用。

【问题讨论】:

  • 您可以使用cgo 工具生成C 包装文件,编译它并从中构建一个库,我想。自己没试过。看这里:golang.org/cmd/cgo/#hdr-C_references_to_Go
  • 哟,听说你喜欢包装纸,所以我在你的包装纸里面放了一个包装纸。谢谢,我去看看。 (编辑:我没有尝试过,因为我只是在“什么是可能的?”阶段)
  • 为什么是 Go 而不是 C? AFAIK,C 图像处理库往往更快。
  • 只是因为我听说 Go 比 C 更现代,而且速度差不多。我正在探索所有可能性。

标签: .net go wrapper


【解决方案1】:

目前不可能将 Go 代码嵌入到主要语言不是 Go 的程序中,因为 Go 需要一个非平凡的运行时来挂钩许多东西。唯一可能的事情是从 Go 程序中调用 C 函数;然后这些函数可以依次调用 Go 函数。您可能希望设计一个使用某种进程间通信的解决方案,而不是让您想用 Go 编写的部分在不同的进程中运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2022-12-24
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多