J’écris du code go qui exporte une fonction comme celle-ci:
package main import "C" //export returnSsortingng func returnSsortingng() ssortingng { // gossortingng := "hello world" return gossortingng } func main() {}
Je construis le fichier .so et le fichier d’en-tête en utilisant go build -buildmode = c-shared, mais lorsque j’appelle returnSsortingng () dans mon code C, j’obtiens “panique: erreur d’exécution: le résultat cgo a un pointeur Go”
Y a-t-il un moyen de faire cela en go 1.9?
Vous devez convertir votre chaîne Go en *C.char
. C.Cssortingng
est une fonction d’utilité pour cela.
package main import "C" //export returnSsortingng func returnSsortingng() *C.char { gossortingng := "hello world" return C.CSsortingng(gossortingng) } func main() {}