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
Barbara StreisandOriginal
2024-12-20 17:23:14387Durchsuche

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

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;
}

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

gcc -pthread foo.c foo.a -o foo

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!

Stellungnahme:
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