Maison >développement back-end >Golang >Golang peut-il être empaqueté dans une DLL ?

Golang peut-il être empaqueté dans une DLL ?

angryTom
angryTomoriginal
2020-03-17 16:09:184401parcourir

Golang peut-il être empaqueté dans une DLL ?

Golang peut-il être emballé dans une DLL ?

Golang peut compiler le programme dans un fichier DLL. La méthode spécifique est la suivante. suit :

1. Golang nécessite gcc lors de la compilation des dll, alors installez d'abord MinGW.

Le système Windows 64 bits doit télécharger la version 64 bits de MinGW : https://sourceforge.net/projects/mingw-w64/

2 Après le téléchargement, exécutez mingw-w64. -install.exe , terminez l'installation de MingGW.

(Apprentissage recommandé : Tutoriel de construction de sites Web)

3. Écrivez d'abord le programme golang exportgo.go :

package main
import "C"
import "fmt"
//export PrintBye
func PrintBye() {
    fmt.Println("From DLL: Bye!")
}
//export Sum
func Sum(a int, b int) int {
    return a + b;
}
func main() {
    // Need a main function to make CGO compile package as C shared library
}

4. Fichier DLL : Une fois

go build -buildmode=c-shared -o exportgo.dll exportgo.go

compilé, deux fichiers sont obtenus : exportgo.dll et exportgo.h.

5. Référez-vous à la définition de la fonction dans le fichier exportgo.h et écrivez le fichier C# importgo.cs :

using System;
using System.Runtime.InteropServices;
namespace HelloWorld
{
    class Hello 
    {
        [DllImport("exportgo.dll", EntryPoint="PrintBye")]
        static extern void PrintBye();
        [DllImport("exportgo.dll", EntryPoint="Sum")]
        static extern int Sum(int a, int b);
        static void Main() 
        {
            Console.WriteLine("Hello World!");
            PrintBye();
            Console.WriteLine(Sum(33, 22));
        }

Compilez le fichier CS pour obtenir exe

csc importgo.cs

Put l'exe et la dll dans Dans le même répertoire, exécutez.

>importgo.exe
Hello World!
From DLL: Bye!
55

Pour plus de connaissances sur le golang, veuillez faire attention à la colonne tutoriel golang sur le site Web PHP chinois.

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:À quoi peut servir Golang ?Article suivant:À quoi peut servir Golang ?