我开始尝试将一些 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])
- 1 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消