Chamando funções de biblioteca compartilhada do Linux em Go
Nesta questão, um desenvolvedor busca ajuda para chamar funções de um objeto compartilhado (.so) arquivo dentro de seu código Go. O pacote ctypes em Python, que permite acesso a funções C, serve como a funcionalidade desejada.
Usando cgo para carregamento estático de biblioteca compartilhada
Para chamar funções estaticamente biblioteca compartilhada conhecida em tempo de compilação, pode-se empregar o pacote cgo. Aqui está um exemplo para acessar a função bar() de libfoo.so:
package example
// #cgo LDFLAGS: -lfoo
//
#include
import "C"
func main() {
C.bar()
}
Carregamento dinâmico de biblioteca compartilhada com cgo
Alternativamente, cgo pode facilitar o acesso a objetos compartilhados carregados dinamicamente em tempo de execução. É necessário utilizar as funções dlopen(), dlsym() e dlclose() para abrir a biblioteca compartilhada, recuperar endereços de funções e fechar a biblioteca. No entanto, essas funções não são suportadas nativamente pelo Go e requerem um wrapper C para implementar a lógica necessária.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3