自从Go 1.5问世以来,我开始重新审视如何将其整合到我现有的项目中.
该项目的代码库完全用C语言编写,用于低级访问硬件和其他有趣的东西.然而,一些更高级别的东西是乏味的,我想开始用更高级别的语言编写它们(Go)
有什么方法可以从C程序调用Go代码吗?我安装了Go 1.5,它添加了-buildmode=c-archive(https://golang.org/s/execmodes),我正在努力工作.
但是,我似乎无法让Go生成适当的头文件以允许我的项目实际编译.当我生成存档时,我在导出的符号中看到了这个函数(使用objdump),但没有包含gcc的头文件抱怨函数不存在(如预期的那样)
我是Go的新手 - 然而,我喜欢这种语言,并希望能够利用它.是否有任何习惯的方式("惯用"在Go的世界中被广泛使用,我看到......)让这个可以很好地与对方玩耍?
我之所以提出这个问题并特别提到Go 1.5的原因是,根据这份文件,https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit?pli= 1# heading=h.1gw5ytjfcoke Go 1.5支持非Go程序调用Go代码.具体而言,在"Go代码链接到非Go程序并从中调用"一节中提到
有没有办法从 C# 执行 Go 函数?例如,对于 Python,我会使用 Ironpython。
我知道我可以生成一个进程来执行 Go 脚本,但如果可能的话,我真的不想回退到这样的解决方案。
谷歌搜索没有显示任何内容,那么有没有办法使用 API 来做到这一点?还是我必须回退流程?
为什么Go编译器会产生大的二进制文件?
例如,在编译下面的代码后,我得到一个1.8 MB的exec文件
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu和Win7上测试了上面的代码,结果是一样的!
我还用+70行代码编写了一个更大的程序,结果二进制文件又惊人地1.8 MB(实际上有几个字节差异).我想知道Go编译器将什么转储到二进制文件中.