Aufrufen statischer Bibliotheken in Go aus externen Dateien
Die Möglichkeit, statische Objektdateien (.so) aus Go heraus aufzurufen, wurde in Frage gestellt. insbesondere im Hinblick auf die Verwendung der Funktion syscall.LoadLibrary(). Das Abrufen von Verweisen auf diese Funktion über das Syscall-Paket bleibt jedoch erfolglos.
Tatsächlich liegt die Lösung auf POSIX-Plattformen in cgo, das Entwicklern die Interaktion mit C-Code ermöglicht. Auf die dlopen- und ergänzenden Funktionen kann über cgo zugegriffen werden, was das Laden von Bibliotheken und den Aufruf ihrer Funktionen ermöglicht.
Der folgende Go-Codeausschnitt veranschaulicht beispielsweise, wie eine Funktion namens bar aus einer Bibliothek namens libfoo aufgerufen wird .so:
<code class="go">// #cgo LDFLAGS: -ldl // #include <dlfcn.h> import "C" import fmt func foo() { handle := C.dlopen(C.CString("libfoo.so"), C.RTLD_LAZY) bar := C.dlsym(handle, C.CString("bar")) fmt.Printf("bar is at %p\n", bar) }</code>
Dieser Code veranschaulicht, wie cgo die Verbindung zwischen Go und C überbrücken kann und so die Nutzung von Funktionen aus externen gemeinsam genutzten Bibliotheken ermöglicht.
Das obige ist der detaillierte Inhalt vonKann Go statische Bibliotheken aus externen Dateien aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!