织梦响应式茶叶网站,济南网站制作专业,企业网站建设服务,买空间哪个网站好C语言调用GO最近工作中遇到需要在c语言里面调用go语言的需求#xff0c;总结了一下#xff0c;下面代码里面的每一个注释都很有用#xff0c;闲话不多说#xff0c;直接上代码~示例GO代码#xff1a;package main // 这个文件一定要在main包下面import C // 这…C语言调用GO最近工作中遇到需要在c语言里面调用go语言的需求总结了一下下面代码里面的每一个注释都很有用闲话不多说直接上代码~示例GO代码package main // 这个文件一定要在main包下面import C // 这个 import 也是必须的有了这个才能生成 .h 文件// 下面这一行不是注释是导出为SO库的标准写法注意 export前面不能有空格//export hellofunc hello(value string)*C.char { // 如果函数有返回值则要将返回值转换为C语言对应的类型return C.CString(hello value)}func main(){// 此处一定要有main函数有main函数才能让cgo编译器去把包编译成C的库}注如果go函数有多个返回值会生成一个struct在写c代码时要用相应的struct接收参照生成的.h文件生成so库go build -buildmodec-shared -o hello.so hello.goC代码#include #include #include hello.h // 此处为上一步生成的.h文件int main(){char c1[] did;GoString s1 {c1,strlen(c1)};// 构建go类型char *c hello(s1);printf(r:%s,c);return 0;}编译C代码gcc -o c_go test.c hello.so注这里要把之前生成的so文件已写在后面最后执行./c_go