Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Pergi Menggunakan Perpustakaan Statik daripada Fail Luaran?

Bolehkah Pergi Menggunakan Perpustakaan Statik daripada Fail Luaran?

Barbara Streisand
Barbara Streisandasal
2024-11-02 16:27:02919semak imbas

Can Go Invoke Static Libraries from External Files?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn