接口转到C库
如何将Go程序与C库连接起来?
我一直在浏览Go的源代码,但我仍然没有想到它。 如果某人已经这样做了,你能分享吗?
更新:感谢@fserb,我发布了Go资源中的一些文档:
Cgo支持创建调用C代码的Go包。
用法:cgo [编译器选项] file.go
在调用gcc以编译包的C部分时,编译器选项通过uninterpreted传递。
输入file.go是一个语法上有效的Go源文件,它导入伪包“C”,然后引用诸如C.size_t之类的类型,诸如C.stdout之类的变量或诸如C.putchar之类的函数。
如果导入“C”后面紧跟注释,则在编译包的C部分时,该注释将用作标题。 例如:
// #include // #include import "C"
Cgo将输入文件转换为四个输出文件:两个Go源文件,一个用于6c(或8c或5c)的C文件,以及一个用于gcc的C文件。
Make.pkg中的标准包makefile规则自动执行使用cgo的过程。 有关示例,请参阅$ GOROOT / misc / cgo / stdio和$ GOROOT / misc / cgo / gmp。
Cgo尚未与gccgo合作。
检查cgo 。 另外,请查看Go源代码中的misc / cgo / gmp,以获取有关如何在Go中包装C库的示例代码。