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

Kann Golang in eine DLL gepackt werden?

angryTom
Freigeben: 2020-03-21 14:19:48
Original
4411 Leute haben es durchsucht

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
}
Nach dem Login kopieren

4 DLL-Datei: Nachdem

go build -buildmode=c-shared -o exportgo.dll exportgo.go
Nach dem Login kopieren

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));
        }
Nach dem Login kopieren

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

csc importgo.cs
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage