Heim > Backend-Entwicklung > Golang > Wie kann ich Go-Code in bestehende C-Projekte integrieren?

Wie kann ich Go-Code in bestehende C-Projekte integrieren?

Barbara Streisand
Freigeben: 2024-12-20 17:23:14
Original
386 Leute haben es durchsucht

How Can I Integrate Go Code into Existing C Projects?

Go-Code in bestehende C-Projekte integrieren

Vor Go 1.5 war die Integration von Go-Code in C-Projekte eine Herausforderung. Mit der Einführung des Flags -buildmode=c-archive ist es jedoch möglich geworden, Go-Code aus C-Programmen heraus aufzurufen.

Befolgen Sie diese Anweisungen, um die erforderlichen Header-Dateien und das Archiv für die Verknüpfung mit C-Code zu generieren Schritte:

  1. Erstellen Sie eine Go-Quelldatei mit den Funktionen, die Sie in C verfügbar machen möchten.
  2. Markieren Sie die exportierten Funktionen mit //export Kommentare.
  3. Verwenden Sie den folgenden Befehl, um die C-aufrufbare statische Bibliothek zu erstellen:
go build -buildmode=c-archive <Go_source_file>.go
Nach dem Login kopieren

Dadurch werden ein Archiv (z. B. foo.a) und eine Header-Datei ( z. B. foo.h).

Fügen Sie in Ihren C-Code die generierte Header-Datei ein und verwenden Sie die exportierten Funktionen entsprechend der CGo-Benennung Konventionen. Zum Beispiel:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}
Nach dem Login kopieren

Um das C-Programm zu kompilieren, verwenden Sie einen Befehl wie:

gcc -pthread foo.c foo.a -o foo
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Die Hauptfunktion in der Go-Quelldatei ist erforderlich, auch wenn sie leer ist.
  • Verwenden Sie beim Kompilieren die Option -pthread Das C-Programm als Go-Laufzeit verwendet Threads.
  • Sie können beim Erstellen der Bibliothek die Ausgabearchiv- und Headerdateinamen mit den Flags -o bzw. -I angeben.

Das obige ist der detaillierte Inhalt vonWie kann ich Go-Code in bestehende C-Projekte integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage