Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengimport Fungsi C DLL ke dalam Go?
Cara Mengimport Fungsi DLL Ditulis dalam C Menggunakan Go
Soalan:
Bagaimana bolehkah anda mengimport fungsi daripada DLL yang ditulis dalam C menggunakan Go, serupa dengan atribut DllImport dalam C#.NET?
Jawapan:
Terdapat beberapa pendekatan untuk mencapai ini dalam Go:
1. Kaedah Cgo:
Menggunakan cgo membolehkan anda mengakses fungsi DLL seperti berikut:
import "C" func main() { C.SomeDllFunc(...) }
Pendekatan ini pada asasnya "menghubungkan" ke perpustakaan DLL. Anda boleh memasukkan kod C ke dalam Go dan mengimportnya menggunakan kaedah C standard.
2. Kaedah Syscall:
Sebagai alternatif, anda boleh menggunakan pakej syscall, seperti yang ditunjukkan di bawah:
import ( "fmt" "syscall" "unsafe" ) var ( kernel32, _ = syscall.LoadLibrary("kernel32.dll") getModuleHandle, _ = syscall.GetProcAddress(kernel32, "GetModuleHandleW") ) func GetModuleHandle() (handle uintptr) { var nargs uintptr = 0 if ret, _, callErr := syscall.Syscall(uintptr(getModuleHandle), nargs, 0, 0, 0); callErr != 0 { abort("Call GetModuleHandle", callErr) } else { handle = ret } return }
3. Sumber GitHub:
Untuk panduan terperinci tentang menggunakan DLL dalam Go, rujuk dokumentasi GitHub di: https://github.com/golang/go/wiki/WindowsDLLs
In ringkasan, terdapat tiga kaedah utama untuk mengimport dan menggunakan fungsi DLL yang ditulis dalam C dalam Go: cgo, syscall dan sumber GitHub disebutkan di atas.
Atas ialah kandungan terperinci Bagaimana untuk Mengimport Fungsi C DLL ke dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!