So kompilieren Sie ein Golang-Projekt korrekt mit einem Paket, das C-Code enthält

WBOY
Freigeben: 2024-02-06 10:24:03
nach vorne
957 Leute haben es durchsucht

如何使用包含 C 代码的包正确编译 Golang 项目

Frageninhalt

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

:

#include "calc.h"

int add(int a, int b) {
    return a + b;
}
Nach dem Login kopieren

main.go:

int add(int a, int b);
Nach dem Login kopieren

go hat CGO standardmäßig aktiviert, also erstellen Sie es einfach: calc.c

go build -o main.out .
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!