我一直在使用cgo來連接Go和C.但是,當試圖對Go和C++執行相同操作時,每次嘗試調用函數時都會收到編譯錯誤。從代碼的目錄使用go build .
,我得到以下錯誤:Go無法調用C++函數
./main.go: In function 'void _cgo_3612c872201c_Cfunc_getint(void*)':
./main.go:48:53: error: invalid conversion from 'void*' to '_cgo_3612c872201c_Cfunc_getint(void*)::<anonymous struct>*' [-fpermissive]
./main.go:54:4: error: invalid conversion from 'void*' to '_cgo_3612c872201c_Cfunc_getint(void*)::<anonymous struct>*' [-fpermissive]
我已經把一個超級簡單的例子,下面這說明了問題。
main.go:
package main
/*
#cgo CFLAGS: -x c++
int getint()
{
return 1;
}
*/
import "C"
import (
"fmt"
)
func main() {
fmt.Println(C.getint())
}
有誰知道這是CGO一個bug,或有點毛病我怎麼寫的代碼?根據cgo documentation,支持C++。我爲Linux/amd64使用Go版本1.7.5。
非常感謝!
哦,這很有道理!非常感謝你的幫助! –