Heim > Backend-Entwicklung > Golang > Können Go-Anwendungen C#-DLLs direkt verwenden, und wenn nicht, welche Problemumgehungen gibt es?

Können Go-Anwendungen C#-DLLs direkt verwenden, und wenn nicht, welche Problemumgehungen gibt es?

Barbara Streisand
Freigeben: 2024-12-05 09:14:16
Original
856 Leute haben es durchsucht

Can Go Applications Directly Use C# DLLs, and If Not, What Workarounds Exist?

C#-DLLs in Go-Anwendungen verwenden: Ist das möglich?

Der Aufruf von C#-DLLs aus Go-Anwendungen war für einige ein Diskussionsthema Zeit, und obwohl es kein einfacher Prozess wie die Verwendung von C oder C-DLLs ist, ist es mit Hilfe von externen möglich Bibliotheken.

Aktuelle Möglichkeiten in Go

Derzeit gibt es begrenzte Möglichkeiten, C#-DLLs direkt in Go zu verwenden. Das Paket golang.org/x/sys/windows bietet einige Unterstützung für den Aufruf von Windows-DLLs aus Go, erstreckt sich jedoch nicht auf C#-DLLs.

Alternative Lösung

Glücklicherweise zielt ein Projekt auf GitHub namens go-dotnet darauf ab, die Lücke zwischen Go- und .NET-Assemblys zu schließen. Durch die Integration einer COM-basierten Interop-Bibliothek ermöglicht go-dotnet Go-Anwendungen den Aufruf von C#-Methoden.

Beispiel

Um zu demonstrieren, wie go-dotnet verwendet wird, betrachten wir Folgendes eine einfache C#-DLL, die zwei Zahlen hinzufügt:

public class Adder
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}
Nach dem Login kopieren

In Go können wir go-dotnet als Schnittstelle dazu verwenden DLL:

package main

import (
    "fmt"

    "github.com/matiasinsaurralde/go-dotnet/dotnet"
)

func main() {
    assembly, err := dotnet.AsAssembly("MathForGo.dll")
    if err != nil {
        panic(err)
    }

    adderType, err := assembly.Type("MathForGo.Adder")
    if err != nil {
        panic(err)
    }

    addMethod, err := adderType.Method("Add")
    if err != nil {
        panic(err)
    }

    result, err := addMethod.Invoke(2, 3)
    if err != nil {
        panic(err)
    }

    fmt.Printf("%v\n", result) // Prints "5"
}
Nach dem Login kopieren

Bitte beachten Sie, dass möglicherweise zusätzliche Einstellungen erforderlich sind, damit go-dotnet ordnungsgemäß funktioniert, z. B. das Anpassen von Systempfaden oder die Verwendung einer Version von Go, die COM-Interop unterstützt.

Das obige ist der detaillierte Inhalt vonKönnen Go-Anwendungen C#-DLLs direkt verwenden, und wenn nicht, welche Problemumgehungen gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage