„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie rufe ich Linux Shared Library-Funktionen in Go auf?

Wie rufe ich Linux Shared Library-Funktionen in Go auf?

Veröffentlicht am 08.11.2024
Durchsuche:392

How to Call Linux Shared Library Functions in Go?

Aufrufen von Linux Shared Library-Funktionen in Go

Bei dieser Frage sucht ein Entwickler Unterstützung beim Aufrufen von Funktionen aus einem Shared Object (.so). Datei in ihrem Go-Code. Als gewünschte Funktionalität dient das ctypes-Paket in Python, das den Zugriff auf C-Funktionen ermöglicht.

Verwenden von cgo für das statische Laden gemeinsamer Bibliotheken

Zum statischen Aufruf von Funktionen Um zur Kompilierungszeit eine bekannte gemeinsam genutzte Bibliothek zu erstellen, kann man das cgo-Paket verwenden. Hier ist ein Beispiel für den Zugriff auf die Funktion bar() von libfoo.so:

package example

// #cgo LDFLAGS: -lfoo
//

#include 

import "C"

func main() {
    C.bar()
}

Dynamisches Laden gemeinsam genutzter Bibliotheken mit cgo

Alternativ kann cgo den Zugriff auf gemeinsam genutzte Objekte erleichtern, die zur Laufzeit dynamisch geladen werden. Man muss die Funktionen dlopen(), dlsym() und dlclose() verwenden, um die gemeinsam genutzte Bibliothek zu öffnen, Funktionsadressen abzurufen und die Bibliothek zu schließen. Allerdings werden diese Funktionen von Go nicht nativ unterstützt und erfordern einen C-Wrapper, um die notwendige Logik zu implementieren.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3