目前,我正在使用Cgo從Go調(diào)用C函數(shù)。我正在嘗試在Go中重新創(chuàng)建“讀取照片”示例。但是,C函數(shù)上的一個函數(shù)需要一個自int* len變量(獎勵問題;是否與int *len?相同)。在我閱讀本文時,這是一個指向整數(shù)的指針。有問題的函數(shù)是ccv_writelibccv庫的。完整的簽名是:int ccv_write(ccv_dense_matrix_t* mat, char* out, int* len, int type, void* conf)相關(guān)代碼段如下: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關(guān)于如何傳遞正確的論點(diǎn)有什么想法?
3 回答

慕俠2389804
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個贊
這似乎為我工作:
package main
/*
void foo(int *len) { *len = 1234; }
*/
import "C"
func main() {
var x C.int
C.foo(&x)
println(x)
}

絕地?zé)o雙
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個贊
您將需要unsafe.Pointer
演員表。
C.ccv_write(image.image, dst, (*C.int)(unsafe.Pointer(&x)), C.CCV_IO_PNG_FILE, 0)
- 3 回答
- 0 關(guān)注
- 443 瀏覽
添加回答
舉報(bào)
0/150
提交
取消