Go in einem vorhandenen C-Projekt verwenden
Ihr Ziel ist es, Go-Funktionen in ein C-Programm zu integrieren, indem Sie eine Objektdatei aus einer Go-Quelle erstellen Datei kopieren und in ein bestehendes C-Projekt einbinden. Allerdings treten trotz der Verwendung von GCCGO Verknüpfungsfehler auf.
Um dieses Problem zu beheben, wie in der Lösung vorgeschlagen, sollten Sie den folgenden Ansatz in Betracht ziehen:
Für Go 1.5 und höher verwenden Sie das Flag -buildmode Erstellen Sie C-kompatible Bibliotheken:
Statische Bibliothek:
go build -buildmode c-archive -o mygopkg.a
Gemeinsame Bibliothek:
go build -buildmode c-shared -o mygopkg.so
Sobald Sie die C-kompatible Bibliothek haben, können Sie sie in Ihr C-Projekt integrieren:
Statisch Bibliothek:
gcc -o main _main.c mygopkg.a -lpthread
Gemeinsame Bibliothek:
export LD_RUN_PATH=$(pwd) gcc -o main _main.c mygopkg.so -lpthread
Beachten Sie, dass LD_RUN_PATH dafür sorgt, dass die Der Linker findet die gemeinsam genutzte Bibliothek im aktuellen Verzeichnis.
Mit diesem Ansatz können Sie C-kompatible Bibliotheken in Go erstellen und diese nahtlos in bestehende C-Projekte integrieren, sodass Sie Go-Funktionen aus Ihrem C-Programm heraus aufrufen können.
Das obige ist der detaillierte Inhalt vonWie integriere ich Go-Funktionen mit GCCGO in ein bestehendes C-Projekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!