Appelez votre propre bibliothèque de langage C avec Go en utilisant cgo

Utilisez votre propre bibliothèque de langage C avec cgo dans Go.

Création de bibliothèque de langage C

Le programme à transformer en bibliothèque est «hello.c» et «hello.h» est son fichier d'en-tête. main.c est un programme qui utilise cette bibliothèque.

hello.c


#include <stdio.h>
#include "hello.h"

void hello(void)
{
    printf("Hello, World!\n");
}

hello.h


extern void hello(void);

main.c


#include <stdlib.h>
#include "hello.h"

int main(int argc, char *argv[])
{
    hello();
    return EXIT_SUCCESS;
}
$ gcc -c hello.c
$ ar rusv libhello.a hello.o
$ gcc -o main main.c -L. -lhello
$ ./main
Hello, World!

Utilisez votre propre bibliothèque dans Go

J'ai préparé le programme suivant appelé main.go. cgo est une fonction permettant d'utiliser le programme en langage C fourni en standard dans Go with Go.

main.go


package main

/*
#cgo LDFLAGS: -L. -lhello
#include <hello.h>
*/
import "C"

func main() {
	C.hello()
}

ʻImport Importe un paquet qui requiert "C" `. Le commentaire écrit juste au-dessus est le code d'utilisation du langage C.

/*
#cgo LDFLAGS: -L. -lhello
#include <hello.h>
*/

Vous pouvez écrire le langage C tel quel ici, et vous pouvez utiliser les fonctions définies ici dans le code Go. Donne des informations sur la bibliothèque du langage C à utiliser au moment de la compilation avec LDFLAGS, qui a la même signification que les deux arguments spécifiés avec $ gcc -o main.c -L. -Lhello dans le chapitre précédent. Une option où -L spécifie l'emplacement de la bibliothèque. La bibliothèque est libhello.a créée dans le chapitre précédent et se trouve dans le même répertoire, spécifiez donc uniquement .. -l spécifie la bibliothèque à utiliser, et la méthode de spécification est de spécifier le nom de la bibliothèque en excluant lib, c'est-à-dire hello en excluant lib de libhello. Après cela, incluez hello.h pour pouvoir appeler la fonction hello ().

Le résultat de l'exécution est le suivant.

$ go run main.go
Hello, World!

Recommended Posts

Appelez votre propre bibliothèque de langage C avec Go en utilisant cgo
Appelons votre propre bibliothèque C ++ avec Python (Préférences)
Appelez votre propre bibliothèque partagée en langage C à partir de Python à l'aide de ctypes
[Renforcer l'apprentissage] DQN avec votre propre bibliothèque
Publiez votre propre bibliothèque Python sur Homebrew
Linux C / C ++ Créez votre propre environnement de création de bibliothèque
Étapes pour installer votre propre bibliothèque avec pip
Utilisation de X11 avec ubuntu18.04 (langage C)
Jusqu'à ce que vous puissiez installer votre propre bibliothèque Python avec pip
Exécutez l'intelligence de votre propre bibliothèque python avec VScode.
Appeler C depuis Python avec DragonFFI
Résolvez votre propre labyrinthe avec Q Learning
Utiliser la bibliothèque curl / jq avec Go
Entraînez UGATIT avec votre propre jeu de données
Résolvez votre propre labyrinthe avec DQN
Utilisons le langage de script pour une vie confortable en C ++ 4 - Utilisons la propre bibliothèque de C ++ à partir du langage de script -
Votre propre client Twitter réalisé avec Django
Créez votre propre serveur DNS avec Twisted
Créez votre propre valeur composite avec SQLAlchemy
Tweet vos propres phrases en utilisant la chaîne de Markov
[Python] Enregistrez votre propre bibliothèque dans PyPI
Jusqu'à ce que vous installiez votre propre bibliothèque Python
Pour importer votre propre module avec jupyter
J'ai essayé Hello World avec un langage OS + C 64 bits sans utiliser de bibliothèque
Essayez de créer votre propre AWS-SDK avec bash
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
[Python] Implémentez votre propre classe de type liste à l'aide de collections.UserList
Créez rapidement votre propre module avec setuptools (python)
Précautions lors de l'utilisation de la bibliothèque google-cloud avec GAE / py
Entraînez Stanford NER Tagger avec vos propres données
Créez votre propre lecteur de musique avec Bottle0.13 + jPlayer2.5!