2009-11-19 73 views
22

如何将一个Go程序与一个C库接口?接口与C库一起使用

我一直在浏览Go的源代码,但我仍然没有弄明白。如果有人已经这样做了,请分享一下吗?

更新:感谢@fserb,我从围棋源发布一些文档:

CGO能够调用C代码转到 包的创建过程。

用法:CGO [编译选项] file.go

编译器调用 GCC编译 包的C-部件时选项传递 通过未解释。

输入file.go是语法上 有效转到源,其导入 伪包“C”,然后文件指的是 类型,如C.size_t,变量,如 C.stdout,或功能,例如作为 C.putchar。

如果“C”的进口立即是 有注释之前,该评论是编译包的C- 部件时用作首标 。例如:

// #include <stdio.h> 
// #include <errno.h> 
import "C" 

CGO将输入文件转换成 四个输出文件:二转到源 文件,6C(或8C或图5c), 和C文件GCC C文件。

Make.pkg中的标准软件包生成文件规则自动执行使用 cgo的过程。例子参见$ GOROOT/misc/cgo/stdio和 $ GOROOT/misc/cgo/gmp。

Cgo尚未使用gccgo。

回答

19

检查cgo。另外,请查看Go源代码中的misc/cgo/gmp以获取有关如何在Go中打包C库的示例代码。

+0

有趣...我会马上学习。谢谢! – jldupont 2009-11-19 02:20:07