gpt4 book ai didi

go - CGo:如何将二维 slice 传递给 C 函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:58 26 4
gpt4 key购买 nike

我的代码是:

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

我的问题是如何将二维 slice 传递给像上面的 fill_2d_array 这样的 C 函数?

谢谢。

最佳答案

解决者:
C.fill_2d_array((*[16]C.char)(unsafe.Pointer(&dirs)))

关于go - CGo:如何将二维 slice 传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com