Dans Go 1.5, la fonctionnalité -buildmode=c-archive a été introduite pour relier le code Go en non-Go environnements. Avec cette fonctionnalité, vous pouvez intégrer du code Go dans un projet C existant, vous permettant ainsi de déléguer des tâches de niveau supérieur au Go plus verbeux.
Pour créer Go fonctions disponibles pour le code C, vous devez les exporter explicitement à l'aide de commentaires spéciaux //export.
package main import ( "C" "fmt" ) //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
La compilation du code Go en tant que bibliothèque appelable en C nécessite l'utilisation de l'indicateur -buildmode=c-archive.
go build -buildmode=c-archive foo.go
Cette commande génère une bibliothèque statique (foo.a) et un fichier d'en-tête (foo.h) contenant la déclaration de fonction exportée.
Dans votre C projet, incluez le fichier d'en-tête généré et utilisez la fonction fournie comme suit :
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
Pour compiler le programme C, utilisez l'indicateur -pthread pour une prise en charge appropriée des threads.
gcc -pthread foo.c foo.a -o foo
L'exécution de l'exécutable imprimera désormais l'entier prévu (42) sur la console.
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!