Heim > Backend-Entwicklung > Golang > Wie kann ich Go-Code in mein bestehendes C-Projekt integrieren?

Wie kann ich Go-Code in mein bestehendes C-Projekt integrieren?

DDD
Freigeben: 2024-12-17 18:48:13
Original
415 Leute haben es durchsucht

How Can I Integrate Go Code into My Existing C Project?

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:

  1. Funktionen für den Export markieren:

    • Funktionen, die von C aufgerufen werden sollen, müssen im Go-Code mit //Kommentare exportieren gekennzeichnet sein.
    • Stellen Sie sicher, dass das Go-Paket, das diese Funktionen enthält, benannt ist main.
    • Fügen Sie eine Funktion mit dem Namen main ein, auch wenn sie leer ist.
    • Importieren Sie das C-Paket.
  2. 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
      Nach dem Login kopieren
      Nach dem Login kopieren
    • Dadurch werden ein Archiv und eine Header-Datei generiert (z. B. foo.a und foo.h).
  3. C-Programm verknüpfen:

    • In das C-Programm einbinden die generierte Header-Datei:

      #include "foo.h"
      Nach dem Login kopieren
    • Verknüpfung mit dem Go-Archiv mithilfe der Option -pthread:

      gcc -pthread foo.c foo.a -o foo
      Nach dem Login kopieren
      Nach dem Login kopieren
    • Dies ermöglicht dem C-Programm Rufen Sie das exportierte Go auf Funktionen.

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() {}
Nach dem Login kopieren

Kompilieren Sie es in ein Archiv:

go build -buildmode=c-archive foo.go
Nach dem Login kopieren
Nach dem Login kopieren

Dann in einem C-Programm (foo.c):

#include "foo.h"

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

Kompilieren Sie es:

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage