Heim > Backend-Entwicklung > Golang > Kann Go statische Bibliotheken aus externen Dateien aufrufen?

Kann Go statische Bibliotheken aus externen Dateien aufrufen?

Barbara Streisand
Freigeben: 2024-11-02 16:27:02
Original
1051 Leute haben es durchsucht

Can Go Invoke Static Libraries from External Files?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage