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.
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