cgo 的一些坑和注意事项


1、import C必须紧跟上面的C代码。c代码需要//和/* */包含起来

2、C调用go的接口,需要在go的接口前面调用//export

  //export go_print   func go_print(value string) {       fmt.Println(value)   } 3、multiple definition of   如果在go的代码里面export,且本文件有C代码的实现,就会出现这个情况 目前了解的是两个解决方法:1、将go里面的c代码移出来搞一个C文件,然后在go里面声明或include;2、在C代码里的函数前面加上__attribute__((weak)) 4、could not determine kind of name for C.free 出现这个情况有两种原因:1、C代码和import "C"之间有空行,2、没有包含free的头文件   go - multiple definition when using cgo - Stack Overflow
Go