Golang cgo编程 [] string 转 C语言 char**

简介:


1
2
3
4
5
6
7
8
9
10
11
12
func Test(args[] string){
    arg := make([](*_Ctype_char), 0)   //C语言char*指针创建切片
    l := len(args)
    for  i,_ := range args{
        char  := C.CString(args[i])
        defer C. free (unsafe.Pointer( char ))  //释放内存
        strptr := (*_Ctype_char)(unsafe.Pointer( char ))
        arg = append(arg, strptr)   //将char*指针加入到arg切片
    }
                                                                                  
    C.test(C. int (l), (**_Ctype_char)(unsafe.Pointer(&arg[0])))   //即c语言的main(int argc,char**argv)
}

上段代码为go语言传进os.args的参数行命令(string切片),通过cgo来调用,传给C语言层

的main(int argc,char**argv) 这里,已重命名C代码的main()函数为test(),主进程由go来启动


golang运用cgo调用C代码,golang的 [ ]string 转C语言的 char**,步骤为上述代码的2-9行。










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1344922,如需转载请自行联系原作者
目录
相关文章
|
27天前
|
监控 网络协议 API
C语言系统编程
C语言系统编程
|
1月前
|
存储 编译器 C语言
c语言中char的作用类型
c语言中char的作用类型
21 0
|
1月前
|
Linux C语言 开发者
Linux系统下C语言的高阶编程
Linux系统下C语言的高阶编程
15 0
|
1月前
|
存储 C语言 索引
掌握多维数组,让你的C语言编程技能暴涨!
掌握多维数组,让你的C语言编程技能暴涨!
|
1月前
|
存储 编译器 程序员
汽车电子行业的 C 语言编程标准
汽车电子行业的 C 语言编程标准
51 0
汽车电子行业的 C 语言编程标准
|
15天前
|
Linux 测试技术 C语言
【Linux】应用编程之C语言文件操作
【Linux】应用编程之C语言文件操作
|
1月前
|
自然语言处理 算法 搜索推荐
C语言的编程
C语言的编程
9 1
|
1月前
|
存储 C语言 索引
遍历一维数组C语言,掌握这个技能,你的编程能力直线上升!
遍历一维数组C语言,掌握这个技能,你的编程能力直线上升!
|
1月前
|
存储 C语言
3分钟搞定阶乘!C语言编程新手也能轻松学会的秘籍
3分钟搞定阶乘!C语言编程新手也能轻松学会的秘籍
|
1月前
|
存储 人工智能 C语言
C语言:选择+编程(每日一练Day16)
C语言:选择+编程(每日一练Day16)
32 3