我一直在使用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。
非常感谢!
哦,这很有道理!非常感谢你的帮助! –