Heim > Backend-Entwicklung > Golang > Wie kann ich Go-Funktionen aus einem C-Programm mit „-buildmode=c-archive' von Go 1.5 aufrufen?

Wie kann ich Go-Funktionen aus einem C-Programm mit „-buildmode=c-archive' von Go 1.5 aufrufen?

Linda Hamilton
Freigeben: 2024-12-19 19:53:13
Original
669 Leute haben es durchsucht

How Can I Call Go Functions from a C Program Using Go 1.5's `-buildmode=c-archive`?

Aufrufen von Go-Code aus einem C-Programm mit Go 1.5

In Go 1.5 wurde die Funktion -buildmode=c-archive eingeführt, um Go-Code in Nicht-Go-Code zu überbrücken Umgebungen. Mit dieser Funktion können Sie Go-Code in ein vorhandenes C-Projekt integrieren und so Aufgaben auf höherer Ebene an das ausführlichere Go delegieren.

Go-Funktionen für C-Aufruf exportieren

Um Go zu erstellen Für C-Code verfügbare Funktionen müssen Sie explizit mithilfe spezieller //Exportkommentare exportieren.

package main

import (
    "C"
    "fmt"
)

//export PrintInt
func PrintInt(x int) {
    fmt.Println(x)
}

func main() {}
Nach dem Login kopieren

Compilerkonfiguration für C Verwendung

Das Kompilieren des Go-Codes als C-aufrufbare Bibliothek erfordert die Verwendung des Flags -buildmode=c-archive.

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

Dieser Befehl generiert eine statische Bibliothek (foo.a) und eine Header-Datei (foo.h), die die exportierte Funktionsdeklaration enthält.

Integration in ein C-Projekt

Innerhalb Fügen Sie in Ihr C-Projekt die generierte Header-Datei ein und verwenden Sie die bereitgestellte Funktion wie folgt:

#include "foo.h"

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

Kompilierung und Ausführung

Um das C-Programm zu kompilieren, verwenden Sie das Flag -pthread für ordnungsgemäße Thread-Unterstützung .

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

Durch Ausführen der ausführbaren Datei wird nun die beabsichtigte Ganzzahl (42) auf der Konsole ausgegeben.

Das obige ist der detaillierte Inhalt vonWie kann ich Go-Funktionen aus einem C-Programm mit „-buildmode=c-archive' von Go 1.5 aufrufen?. 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