Maison >développement back-end >Golang >Comment puis-je importer et utiliser les fonctions DLL C dans mon programme Go ?

Comment puis-je importer et utiliser les fonctions DLL C dans mon programme Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 05:53:13369parcourir

How Can I Import and Use C DLL Functions in My Go Program?

Comment importer une fonction DLL écrite en C à l'aide de Go :

En tant que développeur utilisant Go sur un système Windows, vous pouvez rencontrer le besoin de s'interfacer avec des DLL écrites en C. Explorons quelques méthodes pour y parvenir.

1. Méthode cgo :

Le package cgo intègre de manière transparente le code C dans les programmes Go. Il vous permet d'appeler des fonctions DLL directement en utilisant la syntaxe Go. Par exemple :

import "C"

...

C.SomeDllFunc(...)

2. Utilisation de syscall :

Le package syscall fournit un accès direct à la fonctionnalité d'appel système, y compris la possibilité de charger et d'interagir avec des DLL.

import (
    "syscall"
    "unsafe"
)

...

kernel32, _ := syscall.LoadLibrary("kernel32.dll")
getModuleHandle, _ := syscall.GetProcAddress(kernel32, "GetModuleHandleW")
func GetModuleHandle() uintptr {
    nargs := uintptr(0)
    ret, _, callErr := syscall.Syscall(uintptr(getModuleHandle), nargs, 0, 0, 0)
    if callErr != 0 {
        abort("Call GetModuleHandle", callErr)
    }
    return ret
}

3. Ressources supplémentaires :

  • Page wiki Go sur les DLL Windows : https://github.com/golang/go/wiki/WindowsDLLs
  • Écrire une DLL en C et appeler depuis Go : https://blog.gopheracademy.com/tutorials/calling-a-c-dll-from-go

Ces méthodes vous permettent d'intégrer efficacement les DLL dans vos programmes Go, donnant accès à un large éventail de fonctionnalités écrites en C.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn