"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Conseils pour importer des fonctions DLL C dans Go

Conseils pour importer des fonctions DLL C dans Go

Publié le 2025-04-15
Parcourir:531

How Can I Import C DLL Functions into Go?

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:

  • [Utilisation de dlls sur Window
Dernier tutoriel Plus>

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