Maison >développement back-end >Golang >Comment puis-je importer une fonction DLL C dans Go ?

Comment puis-je importer une fonction DLL C dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 19:30:17860parcourir

How Can I Import a C DLL Function into Go?

Importer une fonction DLL écrite en C avec Go

Pour importer une fonction depuis une DLL écrite en C avec Go, plusieurs approches sont disponibles .

Option 1 : cgo

Le package cgo permet l’invocation directe de fonctions C à partir du code Go. Pour ce faire :

import "C"

C.SomeDllFunc(...)

Option 2 : syscall

Le package syscall peut être utilisé pour charger et appeler des fonctions à partir de DLL. Voici un exemple :

import (
    "fmt"
    "syscall"
    "unsafe"
)

kernel32, _        := syscall.LoadLibrary("kernel32.dll")
getModuleHandle, _ := syscall.GetProcAddress(kernel32, "GetModuleHandleW")

func GetModuleHandle() uintptr {
    ret, _, _ := syscall.Syscall(uintptr(getModuleHandle), 0, 0, 0, 0)
    return ret
}

Option 3 : Utilisation d'une bibliothèque d'assistance

GitHub héberge une page qui simplifie le processus d'interface avec les DLL de Go : https:/ /github.com/golang/go/wiki/WindowsDLLs.

En résumé, il existe trois méthodes principales pour importer une fonction DLL écrite en C à l'aide des bibliothèques Go : cgo, syscall et helper. Chaque approche a ses avantages et ses inconvénients, permettant aux développeurs de choisir la meilleure solution pour leurs besoins spécifiques.

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