Maison > développement back-end > Golang > le corps du texte

Comment puis-je intégrer du code Go dans un projet C existant ?

Mary-Kate Olsen
Libérer: 2024-10-27 08:50:30
original
366 Les gens l'ont consulté

How can I integrate Go code into an existing C project?

Intégration de Go dans un projet C existant

Dans cet article, nous approfondirons le processus d'intégration du code Go dans un projet C existant projet. Ce scénario vous permet d'exploiter les capacités de Go tout en conservant la stabilité de votre base de code C.

Création du fichier objet Go

Pour créer un fichier objet à partir de votre Go code, utilisez la commande suivante :

gccgo -c printString.go -o printString.o -fgo-prefix=print -Wall -Werror -march=native
Copier après la connexion

Cette commande génère un fichier objet nommé printString.o à partir de votre fichier Go printString.go. L'option -fgo-prefix=print spécifie le préfixe à utiliser pour les symboles exportés.

Lier le fichier objet Go

Pour lier votre fichier objet Go au C programme, utilisez la commande suivante :

gccgo -o main c_caller.c printString.o -Wall -Werror -march=native
Copier après la connexion

Cependant, vous pouvez rencontrer des erreurs lors de cette étape. Pour les surmonter, définissez certaines variables d'environnement :

export LD_LIBRARY_PATH=/path/to/libgo.so's_folder
Copier après la connexion

Cela garantit que l'éditeur de liens peut trouver les bibliothèques Go nécessaires.

Pièges potentiels et solutions

Si vous obtenez des erreurs liées à des symboles manquants, telles qu'une référence non définie à main.main' ou une référence non définie à __go_init_main', cela signifie que GCCGO attend une fonction principale dans le fichier Go. Pour résoudre ce problème, vous devez :

  • Supprimer la fonction principale de votre fichier Go.
  • Utilisez les options -static-libgo, -static dans la commande de liaison.

Si vous rencontrez une erreur du type /usr/bin/ld : impossible de trouver -lgo, vous avez peut-être un LD_LIBRARY_PATH mal configuré. Assurez-vous qu'il pointe correctement vers le dossier de la bibliothèque Go.

Solution alternative dans Go 1.5

Dans Go 1.5, vous pouvez créer des bibliothèques compatibles C avec l'outil go. Cela vous permet de compiler du code Go dans une bibliothèque pouvant être liée à des programmes C. Reportez-vous au document de conception des modes d'exécution Go pour plus d'informations.

En suivant ces étapes, vous pouvez intégrer avec succès le code Go dans un projet C existant et profiter des atouts des deux langages de programmation.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!