Heim > Artikel > Backend-Entwicklung > So kompilieren Sie ein Golang-Projekt korrekt mit einem Paket, das C-Code enthält
Ich habe angefangen, ein Projekt in Golang zu schreiben, und bin sofort auf ein Problem gestoßen. Ich muss von meinem Code aus eine Verbindung zur Hardware herstellen und habe einen Treiber und einen vom Anbieter bereitgestellten Golang-Wrapper. Die Beschreibung der Wrapper-Verbindung besagt, dass der Code im src-Verzeichnis des Projekts abgelegt werden muss (ich verwende ein solches Verzeichnis nicht, aber ich lege die Dateien nach Paketnamen im Verzeichnis ./internal/fptr10 und in meinem Hauptverzeichnis ab. go es wurde erfolgreich importiert). Ich habe die Methode in diesem Paket in der IDE GoLand gesehen, aber wenn ich versuche, das Projekt zu kompilieren (ich rufe die erste Funktion auf, die die Treiberinstanz erstellen soll, namens New()), erhalte ich die Fehlermeldung: fptr10. New() ist nicht definiert. Es gibt zwei in C geschriebene Header-Dateien im Wrapper-Verzeichnis und ich weiß, dass mit ihnen etwas nicht stimmt, aber ich verstehe nicht, wie man sie richtig kompiliert.
Das gesamte Projekt sowie die Bibliothek selbst finden Sie unter https://github.com/Natrix31/KKTWatcher P.S.: Ich arbeite unter Windows
Ich habe versucht, das Projekt über die IDE und über die Befehlszeile mit go build und go install zu kompilieren Aber das Ergebnis ist das gleiche. Das Programm kann nicht kompiliert werden und gibt den Fehler „New() undefiniert“ aus. Richtige Antwort: In diesem Fall können Sie den C-Code in das Go-Modul einfügen. Stellen Sie einfach sicher, dass auf Ihrer Plattform ein C-Compiler installiert ist, und verwenden Sie Vorwortkommentare für Zitate.
/* #include <stdio.h> #include <math.h> #include "calc.h" */ import "c" func main() { fmt.println(c.add(1, 2)) }
:
#include "calc.h" int add(int a, int b) { return a + b; }
main.go
:
int add(int a, int b);
go hat CGO standardmäßig aktiviert, also erstellen Sie es einfach: calc.c
go build -o main.out .
Das obige ist der detaillierte Inhalt vonSo kompilieren Sie ein Golang-Projekt korrekt mit einem Paket, das C-Code enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!