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
Barbara StreisandOriginal
2024-12-05 09:14:16815Durchsuche

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;
    }
}

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"
}

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!

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