Maison  >  Article  >  développement back-end  >  Comment appeler des fonctions à partir de fichiers d’objets partagés dans Go ?

Comment appeler des fonctions à partir de fichiers d’objets partagés dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 13:51:30685parcourir

How to Call Functions from Shared Object Files in Go?

Appel de fonctions à partir de fichiers d'objets partagés dans Go

Il est possible d'appeler des fonctions à partir de fichiers d'objets statiques (.so) dans les programmes Go. Contrairement à l'affirmation populaire, la fonction syscall.LoadLibrary n'existe pas dans la bibliothèque standard Go. Au lieu de cela, sur les plates-formes POSIX, vous pouvez exploiter cgo pour utiliser les fonctions dlopen et friends.

Voici un exemple d'extrait de code qui illustre comment y parvenir :

<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>

En utilisant cgo et le appels système appropriés, vous pouvez charger une bibliothèque d'objets partagés et appeler ses fonctions exportées depuis votre programme 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn