(1)Cgo结构

package main

/*
#cgo CFLAGS: -I/user/local/include
#cgo LDFLAGS: -L/user/local/lib -l库
//定义/调用头文件

 //定义C函数
 int test_printf(char a)
 {
    printf("%c\r\n"m a);
    return 0;
 }
*/
import "C"

import "fmt"

func main() {
    var c C.char = 'c'
    retc := C.test_printf(c)
    //这里ret 是C.int 格式,参考转换图则为go 对应着 int32
    retgo = int32(ret) //返回结果强化

    fmt.Printf("%T", c)

}

总结:

1、import "C" 是启用Cgo,以及cgo配置,头文件,C函数
2、需要调用的C语言的内容使用/**/注释起来,放在import "C"之前
3、其中有两个#cgo命令,分别是编译和链接参数

  1. #cgo CFLAGS: -I/user/local/include //库对应头文件所在的目录加入头文件检索路径
  2. #cgo LDFLAGS: -L/user/local/lib -l库 //库所在目录加为链接库检索路径
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,262评论 3 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 处于二十四五岁的我们,身边的人已经开始陆陆续续结婚生子了,刚刚开始接到红色炸弹的时候,并没有多大的感觉,就是会祝...
    尢晴阅读 432评论 0 0
  • 昨晚与她坐车里,谈论着过几天以后,我们会不会不习惯没有彼此的生活。想想后,我觉得是我不能习惯没有她的生活,而她,说...
    筱潘潘Y阅读 182评论 0 0
  • 一阵微风拂过,山涧里各种姹紫嫣红的奇花异草随之微微摇晃,送来清香。一弯溪流浅浅的淌过,透彻的水中,映出岸边草地上手...
    画个小书签阅读 643评论 0 22