Heim  >  Artikel  >  Backend-Entwicklung  >  Kann Golang in eine DLL gepackt werden?

Kann Golang in eine DLL gepackt werden?

angryTom
angryTomOriginal
2020-03-17 16:09:184347Durchsuche

Kann Golang in eine DLL gepackt werden?

Kann Golang in eine DLL gepackt werden?

Golang kann das Programm in eine DLL-Datei kompilieren. Die spezifische Methode ist wie folgt folgt:

1. Golang benötigt beim Kompilieren der DLL gcc, also installieren Sie zuerst MinGW.

Das 64-Bit-Windows-System sollte die 64-Bit-Version von MinGW herunterladen: https://sourceforge.net/projects/mingw-w64/

2 Führen Sie nach dem Herunterladen mingw-w64 aus -install.exe, schließen Sie die Installation von MingGW ab.

(Empfohlenes Lernen: Website-Aufbau-Tutorial)

3. Schreiben Sie zuerst das Golang-Programm 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 DLL-Datei: Nachdem

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

kompiliert wurde, werden zwei Dateien erhalten: exportgo.dll und exportgo.h.

5. Sehen Sie sich die Funktionsdefinition in der Datei exportgo.h an und schreiben Sie die C#-Datei 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));
        }

Kompilieren Sie die CS-Datei, um die exe zu erhalten

csc importgo.cs

Legen Sie die EXE- und DLL-Datei im selben Verzeichnis ab und führen Sie sie aus.

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

Weitere Golang-Kenntnisse finden Sie in der Spalte Golang-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonKann Golang in eine DLL gepackt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn