Heim  >  Artikel  >  Backend-Entwicklung  >  Wie integriere ich Go-Funktionen mit GCCGO in ein bestehendes C-Projekt?

Wie integriere ich Go-Funktionen mit GCCGO in ein bestehendes C-Projekt?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 20:36:03469Durchsuche

How to Integrate Go Functions into an Existing C Project using GCCGO?

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!

Stellungnahme:
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