Se si desidera utilizzare una libreria condivisa che è nota staticamente in fase di compilazione, è sufficiente utilizzare cgo. Leggi la documentazione su come farlo esattamente, ma di solito specifichi alcuni flag linker e un paio di righe commentate. Ecco un esempio su come chiamare la funzione bar()
da libfoo.so
.
package example
// #cgo LDFLAGS: -lfoo
//
// #include <foo.h>
import "C"
func main() {
C.bar()
}
È inoltre possibile utilizzare cgo per accedere agli oggetti condivisi che vengono caricati dinamicamente in fase di runtime. È possibile utilizzare dlopen()
, dlsym()
e dlclose()
per aprire una libreria condivisa, recuperare l'indirizzo di una delle funzioni all'interno e infine chiudere la libreria. Nota che non puoi fare queste cose in Go, devi scrivere un codice wrapper in C che implementa la logica necessaria per te.
possibile duplicato di [Posso utilizzare oggetti condivisi con il linguaggio di programmazione Go (Google)?] (Http://stackoverflow.com/questions/2254777/can-i-use-shared-objects-with-go-google- linguaggio di programmazione) – OneOfOne