Untuk mengakses fungsi dalam fail objek kongsi (.so) menggunakan Go, kami boleh memanfaatkan teknik berikut:
Jika perpustakaan kongsi diketahui pada masa penyusunan, cgo boleh digunakan. Dengan menentukan bendera pemaut yang sesuai dan mengulas baris tertentu, anda boleh memanggil terus fungsi daripada pustaka kongsi. Sebagai contoh, untuk menggunakan bar() daripada libfoo.so:
<code class="go">package example // #cgo LDFLAGS: -lfoo // // #include <foo.h> import "C" func main() { C.bar() }</code>
Sebagai alternatif, cgo boleh digunakan untuk memuatkan objek kongsi secara dinamik pada masa jalan. Ini melibatkan penggunaan fungsi pembalut C untuk melaksanakan logik untuk membuka perpustakaan (dlopen()), mendapatkan semula alamat fungsi (dlsym()) dan menutup perpustakaan (dlclose()).
Sebagai alternatif kepada cgo, anda boleh mencipta pembalut C tersuai yang menyediakan antara muka yang serasi dengan Go kepada fungsi perpustakaan kongsi. Dengan membina pustaka C anda sendiri yang mengeksport fungsi melalui API CGO Go, anda memperoleh lebih kawalan ke atas interaksi dengan pustaka kongsi.
Untuk meniru kefungsian pakej ctypes Python, pertimbangkan untuk menggunakan perpustakaan mach-go, yang menawarkan antara muka seperti ctypes untuk mengakses perpustakaan C daripada Go. Pustaka ini menyediakan cara mudah untuk memuatkan dan menggunakan objek kongsi, dengan sokongan untuk pelbagai platform termasuk Linux.
Atas ialah kandungan terperinci Bagaimana untuk Antara Muka dengan Linux Shared Libraries dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!