Maison  >  Article  >  développement back-end  >  Comment appeler une DLL dans Golang

Comment appeler une DLL dans Golang

WBOY
WBOYoriginal
2023-05-12 21:32:053670parcourir

Golang, en tant que langage de programmation, est largement apprécié des développeurs pour ses puissantes capacités de concurrence et ses performances efficaces. Dans le développement réel, nous pouvons impliquer une interaction avec les fichiers DLL (bibliothèque de liens dynamiques). Comment appeler une DLL dans Golang est devenu un problème important. Cet article présentera comment Golang appelle la DLL et fournira un exemple pratique.

1. Introduction à la DLL Windows

Dans le système d'exploitation Windows, DLL est l'abréviation de bibliothèque de liens dynamiques, qui est un type important de fichier exécutable. Les fichiers DLL contiennent une série de fonctions et de données pour les appels de programme. Ces fonctions peuvent être appelées via différents langages de programmation, tels que C/C++, C# et Delphi, etc. Vous pouvez également utiliser directement l'interface des fichiers DLL dans Golang.

2. Appels entre les bibliothèques Go et DLL

Dans Golang, les appels aux fichiers DLL se font généralement à l'aide de cgo. Lors de l'utilisation de cgo, nous devons utiliser import "C" pour connecter les langages Go et C. L'interaction entre Golang et le langage C peut être obtenue en définissant les fonctions du langage C dans Golang, puis en reliant Golang et le langage C via le mécanisme cgo. Ce qui suit utilise un exemple pratique pour montrer comment appeler une DLL dans Golang.

3. Exemple

Nous allons utiliser la bibliothèque de liens dynamiques DLL suivante pour la démonstration :

#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}

Il s'agit d'une simple bibliothèque de liens dynamiques DLL qui définit une simple fonction d'addition add pour renvoyer la somme de deux entiers. Ci-dessous, nous démontrerons l'interaction entre Golang et le langage C et comment Golang appelle la DLL en suivant les étapes suivantes :

1 Définir les fonctions du langage C dans Go

Définir les fonctions du langage C dans Go est relativement simple, suivez simplement ce qui suit. ces étapes :

package main

import (
    "fmt"
    "unsafe"
)

//#include <stdio.h>
import "C"

// 定义C函数
func Add(a, b int) int {
    return int(C.add(C.int(a), C.int(b)))
}

func main() {
    a := 3
    b := 4
    c := Add(a, b)
    fmt.Printf("%d + %d = %d
", a, b, c)
}

Dans cet exemple, nous chargeons la bibliothèque du langage C en important "C" et définissons une fonction Add. Cette fonction Add sera exposée au code Golang pour utilisation. Notez que dans la fonction Add, nous devons appeler la fonction add dans la bibliothèque de liens dynamiques du langage C via la fonction add en C, et nous devons également convertir le type int en type C.int.

2. Compiler

Après avoir terminé l'écriture du code, nous devons utiliser la commande suivante pour compiler dans Golang :

go build -o main.exe

3.Après avoir terminé la compilation, nous exécutons notre programme via la commande suivante :

.
.main.exe

us Vous pouvez voir le résultat du programme :

3 + 4 = 7

À ce stade, nous avons terminé le processus d'appel de DLL par Golang.

4. Résumé

Cet article présente l'interaction entre les fichiers Golang et DLL L'implémentation spécifique est réalisée via cgo. En pratique, nous pouvons compléter l'interaction entre Golang et DLL en définissant des fonctions du langage C dans Golang et en utilisant des fonctions dans la bibliothèque de liens dynamiques du langage C. En fait, Golang peut également appeler l'interface DLL via le package syscall, mais dans certains cas complexes, il peut être plus pratique d'utiliser Cgo. Par conséquent, l'appel de DLL par Golang est un point de connaissance important dans le développement réel, il doit être maîtrisé pour développer plus efficacement les programmes Golang.

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
Article précédent:golang fonctionne en continuArticle suivant:golang fonctionne en continu