Verwenden Sie Ihre eigene C-Sprachbibliothek mit cgo in Go.
Das Programm, das in eine Bibliothek umgewandelt werden soll, ist "hello.c" und "hello.h" ist die Header-Datei. main.c
ist ein Programm, das diese Bibliothek verwendet.
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!
Ich habe das folgende Programm namens "main.go" vorbereitet. cgo ist eine Funktion zur Verwendung des C-Sprachprogramms, das standardmäßig in Go with Go bereitgestellt wird.
main.go
package main
/*
#cgo LDFLAGS: -L. -lhello
#include <hello.h>
*/
import "C"
func main() {
C.hello()
}
Importieren von Paketen, für die "C" importiert werden muss. Der direkt darüber geschriebene Kommentar ist der Code für die Verwendung der C-Sprache.
/*
#cgo LDFLAGS: -L. -lhello
#include <hello.h>
*/
Sie können die C-Sprache so schreiben, wie sie hier ist, und Sie können die hier im Go-Code definierten Funktionen verwenden. Gibt Informationen zur C-Sprachbibliothek, die zur Kompilierungszeit mit "LDFLAGS" verwendet werden soll. Diese hat dieselbe Bedeutung wie die beiden Argumente, die im vorherigen Kapitel mit "$ gcc -o main main.c -L. -Lhello" angegeben wurden. Eine Option, bei der -L
den Speicherort der Bibliothek angibt. Die Bibliothek wurde im vorherigen Kapitel mit "libhello.a" erstellt und befindet sich im selben Verzeichnis. Geben Sie daher nur "." An. -l
gibt die zu verwendende Bibliothek an, und die Spezifikationsmethode besteht darin, den Bibliotheksnamen ohne lib
anzugeben, dh hallo
ohne lib
von libhello
. Fügen Sie danach hello.h
ein, damit Sie die Funktion hello ()
aufrufen können.
Das Ausführungsergebnis ist wie folgt.
$ go run main.go
Hello, World!
Recommended Posts