【发布时间】:2011-01-16 07:42:51
【问题描述】:
我可以在 Go 中使用共享对象吗?
【问题讨论】:
标签: shared-libraries go
我可以在 Go 中使用共享对象吗?
【问题讨论】:
标签: shared-libraries go
根据 Go FAQ,您可以使用“外部函数接口”调用 C 库:
Go 程序是否与 C/C++ 程序链接?
有两个 Go 编译器实现,6g 和朋友,一般称为 gc 和 gccgo。 Gc 使用不同的调用约定和链接器,因此只能与使用相同约定的 C 程序链接。有这样的 C 编译器,但没有 C++ 编译器。 Gccgo 是一个 GCC 前端,可以小心地与 GCC 编译的 C 或 C++ 程序链接。但是,由于 Go 是垃圾收集的,因此这样做是不明智的,至少是天真地这样做。
有一个“外部函数接口”允许从 Go 代码安全调用 C 编写的库。我们希望使用 SWIG 将此功能扩展到 C++ 库。目前还没有从 C 或 C++ 调用 Go 代码的安全方法。
回答您之前关于 Windows DLL 的问题:不,因为目前没有 Go 的 Windows 实现。欲了解更多信息,请阅读can-go-compiler-be-installed-on-windows
【讨论】: