Memanggil Perpustakaan Statik dalam Go daripada Fail Luaran
Kemungkinan menggunakan fail objek statik (.so) dari dalam Go telah dipersoalkan, khususnya mengenai penggunaan fungsi syscall.LoadLibrary(). Walau bagaimanapun, mendapatkan semula rujukan kepada fungsi ini melalui pakej syscall tetap tidak berjaya.
Sememangnya, pada platform POSIX, penyelesaiannya terletak pada cgo, yang memberi kuasa kepada pembangun untuk berinteraksi dengan kod C. Fungsi dlopen dan pelengkap boleh diakses melalui cgo, membolehkan pemuatan perpustakaan dan penggunaan fungsinya.
Sebagai contoh, coretan kod Go berikut menggambarkan cara menggunakan bar bernama fungsi daripada perpustakaan bernama libfoo .so:
<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>
Kod ini menunjukkan cara cgo boleh merapatkan sambungan antara Go dan C, membolehkan penggunaan fungsi daripada perpustakaan kongsi luaran.
Atas ialah kandungan terperinci Bolehkah Pergi Menggunakan Perpustakaan Statik daripada Fail Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!