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