如何用Go 導入用C 寫的DLL 函數
問題:
問題:如何
問題:答案:
在Go 中實現此目的有多種方法:import "C" func main() { C.SomeDllFunc(...) }1. Cgo 方法:
使用cgo 允許您存取DLL函數,如下所示:
這種方法本質上「連結」到 DLL 庫。您可以將 C 程式碼合併到 Go 中,並使用標準 C 方法匯入它。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 }2. Syscall方法:
或者,您可以使用syscall包,如下所示:
3. GitHub資源:
有關在Go 中使用DLL的詳細指南,請參閱GitHub 的文檔:https://github.com/golang/go/wiki/WindowsDLLsIn總結一下,在Go 中導入和使用C 語言編寫的DLL 函數主要有三種方法:cgo、syscall 和上面提到的GitHub 資源。以上是如何將 C DLL 函數導入 Go 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!