Actuellement, j'utilise Cgo pour appeler des fonctions C depuis Go. J'essaie de recréer le Lire une photo exemple en Go.
Une des fonctions C, cependant, s'attend à une int* len
(question bonus ; est-ce la même chose que int *len
?). D'après ce que je lis, il s'agit d'un pointeur vers un entier. La fonction en question est ccv_write
de la bibliothèque libccv. Sa signature complète est :
int ccv_write(ccv_dense_matrix_t* mat, char* out, int* len, int type, void* conf)
L'extrait de code correspondant est le suivant :
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)
}
L'exemple ci-dessus génère l'erreur de compilation suivante : cannot convert &x (type *int) to type *_Ctype_int
Une idée sur la façon de passer le bon argument ?