目前我正在使用 Cgo 从 Go 调用 C 函数。我正在尝试在 Go中重新创建“阅读照片”示例。
然而,一个关于 C 函数的函数需要一个int* len
参数(额外的问题;是否与 相同int *len
?)。当我读到这篇文章时,这是一个指向整数的指针。有问题的函数是ccv_write
libccv 库的。它的完整签名是:
int ccv_write(ccv_dense_matrix_t* mat, char* out, int* len, int type, void* conf)
相关代码片段如下:
type Image struct {
image *C.ccv_dense_matrix_t
}
func main() {
image := new(Image)
/* ... snip ... */
dst := C.CString("black_and_white_painting.jpg")
defer C.free(unsafe.Pointer(dst))
x := 0 // <- perhaps var x int ?
C.ccv_write(image.image, dst, (*C.int)(&x), C.CCV_IO_PNG_FILE, 0)
}
上面的示例生成以下编译时错误:cannot convert &x (type *int) to type *_Ctype_int
关于如何传递正确论点的任何想法?