Fungsi Memanggil dalam Fail Objek Statik daripada Go
Anda berusaha untuk menggunakan fungsi daripada fail perpustakaan kongsi (.so) dalam Go. Walaupun anda mungkin mengalami cadangan untuk menggunakan syscall.LoadLibrary untuk tujuan ini, percubaan anda telah dipenuhi dengan ralat "undefined: syscall.LoadLibrary."
Walau bagaimanapun, ia sememangnya boleh dilakukan untuk memuatkan perpustakaan dan akses kongsi. fungsinya daripada Go. Untuk mencapai ini pada platform POSIX, anda boleh memanfaatkan cgo dan berinteraksi dengan API asli sistem.
Berikut ialah demonstrasi mudah menggunakan cgo:
<code class="go">// +build linux darwin // #cgo LDFLAGS: -ldl // #include <dlfcn.h> package main import ( "C" "fmt" ) func foo() { // Load the shared library handle := C.dlopen(C.CString("libfoo.so"), C.RTLD_LAZY) // Retrieve the function pointer from the library bar := C.dlsym(handle, C.CString("bar")) // Print the function pointer address fmt.Printf("bar is at %p\n", bar) } func main() { foo() }</code>
Dalam ini contoh:
Perhatikan bahawa sintaks dan nama fungsi yang tepat mungkin berbeza-beza bergantung pada sistem dan pengkompil asas anda. Dengan menggunakan cgo dan berinteraksi dengan API sistem asli, anda boleh merapatkan jurang antara Go dan perpustakaan kongsi, memperluaskan keupayaan aplikasi anda.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Fungsi dalam Fail Objek Statik dari Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!