Jeśli chcesz korzystać z biblioteki współdzielonej, która jest znana statycznie podczas kompilacji, możesz po prostu użyć cgo. Zapoznaj się z dokumentacją, jak to zrobić dokładnie, ale zazwyczaj określasz kilka flag łącznika i kilka skomentowanych linii. Oto przykład, jak wywołać funkcję bar()
z libfoo.so
.
package example
// #cgo LDFLAGS: -lfoo
//
// #include <foo.h>
import "C"
func main() {
C.bar()
}
Możesz również użyć cgo, aby uzyskać dostęp do obiektów wspólnych, które są ładowane dynamicznie w czasie wykonywania. Możesz użyć dlopen()
, dlsym()
i , aby otworzyć współdzieloną bibliotekę, pobrać adres jednej z funkcji wewnątrz i ostatecznie zamknąć bibliotekę. Zauważ, że nie możesz robić tych rzeczy w Go, musisz napisać jakiś kod opakowania w C, który implementuje niezbędną logikę dla ciebie.
możliwy duplikat [Czy mogę używać obiektów wspólnych z językiem programowania Go (Google)?] (Http://stackoverflow.com/questions/2254777/can-i-use-shared-objects-with-go-google- język programowania) – OneOfOne