我正在编写一些go代码,该函数可以导出如下功能:

package main
import "C"

//export returnString
func returnString() string {
    //
    gostring := "hello world"
    return gostring
}
func main() {}

我使用go build .so来构建-buildmode=c-shared和头文件,但是当我在C代码中调用returnString()时,我得到了panic: runtime error: cgo result has Go pointer
在1.9中有办法做到这一点吗?

最佳答案

您需要将go字符串转换为*C.charC.Cstring是为此的实用程序功能。

package main

import "C"

//export returnString
func returnString() *C.char {
    gostring := "hello world"
    return C.CString(gostring)
}

func main() {}

10-08 04:12