使用DllImport 等效項將DLL 函數導入到Go 中
問題陳述
在C# 中, DllImport 用於從C 編寫的DLL中導入函數。 Go 中是否有類似的機制允許導入用 C 建立的 DLL 函數?
使用 CGO 和 Syscall 的解
導入 DLL 函數有多種方法進入圍棋。一種方法涉及使用 cgo 套件,這有助於為 C 程式碼建立 Go 綁定。使用 cgo,您可以像呼叫 Go 函數一樣直接呼叫 DLL 函數。
另一種方法是利用 syscall 套件。這允許您與系統的低階 API 進行交互,包括 DLL 載入和函數呼叫。透過明確管理記憶體並呼叫必要的系統函數,您可以使用 syscall 導入 DLL 函數。
CGO 的範例程式碼
import "C" func main() { C.SomeDllFunc(...) }
CGO的範例程式碼Syscall
import ( "fmt" "syscall" "unsafe" ) func main() { kernel32, _ := syscall.LoadLibrary("kernel32.dll") getModuleHandle, _ := syscall.GetProcAddress(kernel32, "GetModuleHandleW") handle := GetModuleHandle() fmt.Println(handle) } func GetModuleHandle() uintptr { var nargs uintptr = 0 ret, _, _ := syscall.Syscall(uintptr(getModuleHandle), nargs, 0, 0, 0) return ret }
其他資源
有關更多詳細信息,請參閱以下資源:
以上是如何將 C DLL 函數導入 Go 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!