Maison >développement back-end >Golang >Comment importer une fonction DLL C dans Go ?
Comment importer une fonction DLL écrite en C à l'aide de Go
Question :
Comment pouvez-vous importer une fonction à partir d'une DLL écrite en C en utilisant Go, similaire à l'attribut DllImport dans C#.NET ?
Réponse :
Il existe plusieurs approches pour y parvenir dans Go :
1. Méthode Cgo :
L'utilisation de cgo vous permet d'accéder aux fonctions DLL comme suit :
import "C" func main() { C.SomeDllFunc(...) }
Cette approche "lie" essentiellement à la bibliothèque DLL. Vous pouvez incorporer du code C dans Go et l'importer à l'aide de la méthode C standard.
2. Méthode Syscall :
Vous pouvez également utiliser le package syscall, comme indiqué ci-dessous :
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. Ressource GitHub :
Pour un guide détaillé sur l'utilisation des DLL dans Go, reportez-vous à la documentation de GitHub à l'adresse : https://github.com/golang/go/wiki/WindowsDLLs
Dans En résumé, il existe trois méthodes principales pour importer et utiliser les fonctions DLL écrites en C dans Go : cgo, syscall et la ressource GitHub mentionnée. ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!