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

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

angryTom
Libérer: 2020-03-21 14:19:48
original
4406 Les gens l'ont consulté

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
}
Copier après la connexion

4. Fichier DLL : Une fois

go build -buildmode=c-shared -o exportgo.dll exportgo.go
Copier après la connexion

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));
        }
Copier après la connexion

Compilez le fichier CS pour obtenir exe

csc importgo.cs
Copier après la connexion

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

>importgo.exe
Hello World!
From DLL: Bye!
55
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal