为了账号安全,请及时绑定邮箱和手机立即绑定

将 []string 转为 C 字符**

将 []string 转为 C 字符**

Go
Qyouu 2021-06-30 10:05:41
我开始尝试将一些 C 库集成到我使用 cgo 的项目的 Go 代码中,但遇到了一个问题。在其中一个 C 函数中,我需要将 argv 传递给函数调用。在 C 中,argv 是一个指向字符字符串数组的指针(K&R C,第 5.10 节),我需要将字符串片段转换为字符**。关于如何进行从 Go 到 C 的变量类型转换的任何信息,我已经很好地看了一遍,但似乎几乎没有文档。任何帮助,将不胜感激。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您需要自己创建数组。这样的事情应该做:


argv := make([]*C.char, len(args))

for i, s := range args {

    cs := C.CString(s)

    defer C.free(unsafe.Pointer(cs))

    argv[i] = cs

}

C.foo(&argv[0])


查看完整回答
反对 回复 2021-07-19
  • 1 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信