接口转到C库

时间:2009-11-19 02:08:01

标签: c binding go

如何将Go程序与C库连接?

我一直在浏览Go的源代码,但我仍然没有想到它。如果某人已经这样做了,你能分享一下吗?

更新:感谢@fserb,我发布了一些来自Go资源的文档:

  

Cgo可以创建Go   调用C代码的包。

     

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

     

传递编译器选项   通过在调用时解释   gcc编译的C部分   封装

     

输入file.go是语法上的   导入的有效Go源文件   伪包“C”然后指   类型如C.size_t,变量等   作为C.stdout,或者诸如的函数   C.putchar。

     

如果立即导入“C”   在评论之前,评论是   在编译C时用作标题   包的一部分。例如:

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

Cgo将输入文件转换为   四个输出文件:两个Go源   文件,6c(或8c或5c)的C文件,   和gcc的C文件。

     

标准包makefile规则   Make.pkg自动化使用过程   CGO。请参阅$ GOROOT / misc / cgo / stdio和   例如$ GOROOT / misc / cgo / gmp。

     

Cgo尚未与gccgo合作。

1 个答案:

答案 0 :(得分:19)

检查cgo。另外,请查看Go源代码中的misc / cgo / gmp,了解如何在Go中包装C库的示例代码。