由于任务的原因,有一个项目需要用go语言调用c代码。之前有接触过swig,因此直接上官网去swig,果不其然,它是支持go语言的,二话不说,直接搞起。
首先,如果您不熟悉swig,可以自行百度。然后,本人也是不熟悉go语言,只为了能在go语言顺利调用c代码,因此才考虑用swig。不过,我也有几个考虑的,第一,我有java调用c代码的经验(jni),我知道调用c代码,最关键的内存的回收要处理好,不然会有不可忽略的bug等着你,hhh;第二,我囫囵吞枣的看了下go的语法,大概了知道了go与c类型的转换,还有go语言指针、数组等区别,一时间也无法很好的写出比较优良的代码,于是把希望寄托于swig。
好了下面开始正题。
Swing and Go 官方文档很清楚交了你怎么使用swig 来封装你的c代码,让go顺利的调用它。
文档第一个列子就是
% swig -go -cgo -intgosize 32 example.i
需要注意的文档要求把代码文件放入 GOPATH/src。这个为了让你后面 import的时候直接加入包名而方便的,你可以不需要这么做。直接在自己希望的目录中,运行上面的代码。
首先,目录有的文件为:example.c example.i。直接运行
% swig -go -cgo -intgosize 32 example.i
<