Intégrer Go Code dans un projet C existant
Question :
Est-il possible d'appeler Go Code à partir d'un programme C, et si oui, comment cela peut-il être atteint ?
Réponse :
Oui, Go 1.5 a introduit le mode -buildmode=c-archive, qui permet de compiler le code Go dans une archive adaptée à la liaison avec des programmes C. Pour intégrer du code Go dans un projet C existant :
Marquer les fonctions pour l'exportation :
Compiler Go Archive :
Compilez le code Go dans un fichier statique appelable en C bibliothèque en utilisant la commande suivante :
go build -buildmode=c-archive foo.go
Programme Link C :
Dans le C programme, incluez le fichier d'en-tête généré :
#include "foo.h"
Lien vers l'archive Go à l'aide de l'option -pthread :
gcc -pthread foo.c foo.a -o foo
Exemple :
Considérez le code Go suivant (foo.go) :
package main import "C" import "fmt" //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Compilez-le dans une archive :
go build -buildmode=c-archive foo.go
Ensuite, dans un programme C (foo.c) :
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
Compilez-le :
gcc -pthread foo.c foo.a -o foo
L'exécution de foo affichera "42".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!