[英]CGo: how to pass a 2 dimensional slice to C function
我的代码是:
package main
/*
#include <stdio.h>
#include <string.h>
void fill_2d_array(char (*s)[16]) {
strcpy(s[0], "hello");
strcpy(s[1],"cgo");
}
*/
import "C"
import "fmt"
import "unsafe"
func main() {
dirs := make([][]byte, 4)
for i := 0; i < 4; i++ {
dirs[i] = make([]byte, 16)
}
C.fill_2d_array(((*C.char)[16])(unsafe.Pointer(&dirs)))
fmt.Println(dirs)
}
当我使用go run test.go
,它失败并说:
./test.go:21: type *C.char is not an expression
我的问题是如何将二维切片传递给上面的fill_2d_array
这样的C函数?
谢谢。
解决方案:
C.fill_2d_array((*[16]C.char)(unsafe.Pointer(&dirs)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.