cgo 结果有 go 指针
cgo result has go pointer
我正在编写一些导出函数的代码:
package main
import "C"
//export returnString
func returnString() string {
//
gostring := "hello world"
return gostring
}
func main() {}
我使用 go build -buildmode=c-shared
构建了 .so
和头文件,但是当我在我的 C 代码中调用 returnString()
时,我得到 panic: runtime error: cgo result has Go pointer
在 go 1.9 中有办法做到这一点吗?
您需要将 go 字符串转换为 *C.char
。 C.Cstring
是效用函数。
package main
import "C"
//export returnString
func returnString() *C.char {
gostring := "hello world"
return C.CString(gostring)
}
func main() {}
我正在编写一些导出函数的代码:
package main
import "C"
//export returnString
func returnString() string {
//
gostring := "hello world"
return gostring
}
func main() {}
我使用 go build -buildmode=c-shared
构建了 .so
和头文件,但是当我在我的 C 代码中调用 returnString()
时,我得到 panic: runtime error: cgo result has Go pointer
在 go 1.9 中有办法做到这一点吗?
您需要将 go 字符串转换为 *C.char
。 C.Cstring
是效用函数。
package main
import "C"
//export returnString
func returnString() *C.char {
gostring := "hello world"
return C.CString(gostring)
}
func main() {}