Aufrufen von Linux Shared Library-Funktionen in Go
Bei dieser Frage sucht ein Entwickler Hilfe 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.
Verwendung 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 Paket cgo verwenden. Hier ist ein Beispiel für den Zugriff auf die Funktion bar() von libfoo.so:
<code class="go">package example // #cgo LDFLAGS: -lfoo // #include <foo.h> import "C" func main() { C.bar() }</code>
Dynamisches Laden gemeinsam genutzter Bibliotheken mit cgo
Alternativ kann cgo den Zugriff auf freigegebene Bibliotheken erleichtern Objekte, 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. Diese Funktionen werden jedoch von Go nicht nativ unterstützt und erfordern einen C-Wrapper, um die notwendige Logik zu implementieren.
Das obige ist der detaillierte Inhalt vonWie rufe ich Linux Shared Library-Funktionen in Go auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!