Maison  >  Article  >  développement back-end  >  Comment intégrer des fonctions Go dans un projet C existant à l'aide de GCCGO ?

Comment intégrer des fonctions Go dans un projet C existant à l'aide de GCCGO ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 20:36:03469parcourir

How to Integrate Go Functions into an Existing C Project using GCCGO?

Utilisation de Go dans un projet C existant

Vous souhaitez intégrer des fonctions Go dans un programme C en créant un fichier objet à partir d'une source Go et en l'incluant dans un projet C existant. Cependant, vous rencontrez des erreurs de liaison malgré l'utilisation de GCCGO.

Pour résoudre ce problème, comme suggéré par la solution, envisagez l'approche suivante :

Pour Go 1.5 et versions ultérieures, utilisez l'indicateur -buildmode pour créer des bibliothèques compatibles C :

  • Bibliothèque statique :

    go build -buildmode c-archive -o mygopkg.a
  • Bibliothèque partagée :

    go build -buildmode c-shared -o mygopkg.so

Une fois que vous disposez de la bibliothèque compatible C, vous pouvez l'intégrer dans votre projet C :

  • Statique bibliothèque :

    gcc -o main _main.c mygopkg.a -lpthread
  • Bibliothèque partagée :

    export LD_RUN_PATH=$(pwd)
    gcc -o main _main.c mygopkg.so -lpthread

Notez que LD_RUN_PATH garantit que le linker trouve la bibliothèque partagée dans le répertoire actuel.

En utilisant cette approche, vous pouvez créer des bibliothèques compatibles C dans Go et les intégrer de manière transparente dans des projets C existants, vous permettant d'appeler des fonctions Go depuis votre programme C.

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!

Déclaration:
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