swig 之 go 语言调用c,多参数返回

这篇博客介绍了如何利用Swig在Go语言中调用C代码,特别是处理多参数数组返回的情况。作者指出,Swig能够自动处理Go和C之间的类型转换,并给出了将`int*`参数替换为`[]int32`的示例。通过修改接口文件和配置,成功实现了Go调用C函数并接收修改后的数组值。
摘要由CSDN通过智能技术生成

由于任务的原因,有一个项目需要用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<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值