之間共享C.int我有:golang:我可以在主包的包
var foo C.int
foo = 3
t := fastergo.Ctuner_new()
fastergo.Ctuner_register_parameter(t, &foo, 0, 100, 1)
在fastergo包
我有:
func Ctuner_register_parameter(tuner unsafe.Pointer, parameter *C.int, from C.int, to C.int, step C.int) C.int {
...
}
,如果我嘗試運行它,我得到:
demo.go:14[/tmp/go-build742221968/command-line-arguments/_obj/demo.cgo1.go:21]: cannot use &foo (type *_Ctype_int) as type *fastergo._Ctype_int in function argument
我真的不知道有什麼Go是試圖在這裏告訴我,但不知何故,我認爲它想告訴我,所有的C.int不相等?爲什麼會這樣?我該如何解決這個問題/解決問題?
這兩種類型似乎不同(_Ctype_int和fastergo._Ctype_int)。我不確定cgo的工作原理,但C.int從哪裏來?它是否來自一些進口包裝? –
@Laurent「C」是在go中使用C代碼的僞代碼。閱讀:http://golang.org/doc/articles/c_go_cgo.html基本上我指的是兩次完全相同的類型(一個C語言整數),Go沒有看到它們是等價的。 – mnagel
嘗試在'fastergo'包中定義'_Ctype_int',然後一致地將其稱爲'fastergo._Ctype_int'。他們目前處於不同的範圍。 – Intermernet