Importation d'une fonction dll dans Go en utilisant DLLIMPORT Equivalent
Instruction Problème
dans C #, DLLIMPORT est utilisé pour importer des fonctions à partir d'une dll écrite dans C. Dans c?
Solution à l'aide de cgo et syscall
Il existe plusieurs approches pour importer une fonction DLL dans Go. Une méthode consiste à utiliser le package CGO, qui facilite la création de liaisons GO pour le code C. Avec CGO, vous pouvez appeler directement les fonctions DLL comme s'ils étaient des fonctions GO.
Une autre méthode exploite le package syscall. Cela vous permet d'interagir avec les API de bas niveau du système, y compris le chargement DLL et l'appel de fonction. En gérant explicitement la mémoire et en appelant les fonctions système nécessaires, vous pouvez importer des fonctions DLL à l'aide de syscall.
Exemple de code pour cgo
import "C" func main() { C.SomeDllFunc(...) }
Exemple de code pour 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 }
Ressources supplémentaires
Pour plus de détails, reportez-vous aux ressources suivantes:
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3