Frage: Können Go-Anwendungen mit Funktionen in einer statischen Objektdatei (.so) interagieren?
Antwort: Ja, es ist möglich, Funktionen aus einer Bibliothek mit Go zu laden und aufzurufen. Das integrierte Syscall-Paket bietet jedoch trotz gegenteiliger Online-Behauptungen nicht die LoadLibrary-Funktion.
Um dies zu erreichen, können Sie cgo nutzen, ein Tool, das C- und Go-Code verbindet. Hier ist ein Beispiel mit dlopen und verwandten Funktionen aus der POSIX C-Bibliothek:
<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>
In diesem Beispiel:
Wenn Sie diesem Ansatz folgen, können Sie Funktionen in externen Bibliotheken nahtlos aus Ihrem Go-Code aufrufen.
Das obige ist der detaillierte Inhalt vonWie können Go-Anwendungen mit Funktionen in einer .so-Datei interagieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!