Go-Code in ein bestehendes C-Projekt integrieren
Frage:
Ist es möglich, Go-Code aufzurufen? aus einem C-Programm, und wenn ja, wie kann das sein? erreicht?
Antwort:
Ja, Go 1.5 hat den -buildmode=c-archive-Modus eingeführt, der es ermöglicht, Go-Code in ein Archiv zu kompilieren, das für die Verknüpfung mit C-Programmen geeignet ist. So integrieren Sie Go-Code in ein vorhandenes C-Projekt:
Funktionen für den Export markieren:
Kompilieren Go-Archiv:
Kompilieren Sie den Go-Code mit in eine C-aufrufbare statische Bibliothek den folgenden Befehl:
go build -buildmode=c-archive foo.go
C-Programm verknüpfen:
In das C-Programm einbinden die generierte Header-Datei:
#include "foo.h"
Verknüpfung mit dem Go-Archiv mithilfe der Option -pthread:
gcc -pthread foo.c foo.a -o foo
Beispiel:
Bedenken Sie den folgenden Go-Code (foo.go):
package main import "C" import "fmt" //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Kompilieren Sie es in ein Archiv:
go build -buildmode=c-archive foo.go
Dann in einem C-Programm (foo.c):
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
Kompilieren Sie es:
gcc -pthread foo.c foo.a -o foo
Wenn Sie foo ausführen, wird „42“ ausgegeben.
Das obige ist der detaillierte Inhalt vonWie kann ich Go-Code in mein bestehendes C-Projekt integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!