現在、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
正しい引数を渡す方法について何か考えはありますか?