2009-11-19 15 views
22

Wie verbindet man ein Go-Programm mit einer C-Bibliothek?Schnittstelle Mit C-Bibliotheken gehen

Ich habe Go Quellcode durchsucht, aber ich habe es immer noch nicht herausgefunden. Wenn jemand das schon getan hat, könntest du es bitte teilen?

AKTUALISIERT: Dank @fserb, ich bin eine Dokumentation aus den Quellen Go Posting:

CGO ermöglicht die Erstellung von Go Pakete, die C-Code aufrufen.

Verbrauch: CGO [Compileroptionen] file.go

Die Compiler-Optionen durch uninterpretiert geben werden, wenn gcc Aufruf der C-Teile des Paket zu kompilieren.

Der Eingang file.go ist eine syntaktisch gültig Go-Quelldatei, die das pseudo-Paket „C“ importiert und dann auf Typen bezieht sich wie C.size_t, Variablen, wie C.stdout oder Funktionen wie beispiels als C.putchar.

Wenn der Import von „C“ sofort durch einen Kommentar vorangestellt ist, ist, dass Kommentar als Header verwendet wird, wenn die C Teile des Pakets zu kompilieren. Zum Beispiel:

// #include <stdio.h> 
// #include <errno.h> 
import "C" 

CGO transformiert die Eingabedatei in vier Ausgabedateien: zwei Go Quelle Dateien, eine C Datei für 6c (oder 8c oder 5c), und eine C-Datei für gcc.

Das Standardpaket makefile Regeln in Make.pkg automatisieren den Prozess der Verwendung cgo. Siehe $ GOROOT/misc/cgo/stdio und $ GOROOT/misc/cgo/gmp für Beispiele.

Cgo funktioniert noch nicht mit gccgo.

Antwort

19

Überprüfen Sie cgo. Werfen Sie auch einen Blick auf misc/cgo/gmp im Go-Quellcode, um einen Beispielcode zum Umbruch einer C-Bibliothek in Go zu erhalten.

+0

Interessant ... Ich werde sofort studieren. Vielen Dank! – jldupont