Maison > Article > développement back-end > Comment les applications Go peuvent-elles interagir avec les fonctions contenues dans un fichier .so ?
Question : Les applications Go peuvent-elles interagir avec les fonctions d'un fichier d'objet statique (.so) ?
Réponse : Oui, il est possible de charger et d'invoquer des fonctions à partir d'une bibliothèque à l'aide de Go. Cependant, le package syscall intégré ne fournit pas la fonction LoadLibrary, malgré les affirmations contraires en ligne.
Pour ce faire, vous pouvez exploiter cgo, un outil qui relie le code C et Go. Voici un exemple utilisant dlopen et les fonctions associées de la bibliothèque POSIX C :
<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>
Dans cet exemple :
En suivant cette approche, vous pouvez appeler de manière transparente des fonctions dans des bibliothèques externes à partir de votre code Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!