Verwendung von C#-DLLs in Go-Anwendungen
Der Aufruf von C#-DLLs aus Go-Anwendungen stellt eine einzigartige Herausforderung dar. Während C/C-DLLs mit Syscall geladen werden können, haben C#-Assemblys ein anderes Format.
Go-Dotnet-Bibliothek
Glücklicherweise gibt es ein GitHub-Projekt namens go-dotnet ( https://github.com/matiasinsaurralde/go-dotnet) schließt die Lücke. Diese Bibliothek ermöglicht Go-Anwendungen das Laden und Verwenden von .NET-Assemblys, einschließlich C#-DLLs.
Beispielverwendung
Hier ist ein Beispiel dafür, wie eine einfache C#-DLL aufgerufen wird, die hinzufügt zwei Zahlen:
package main import ( "fmt" "github.com/matiasinsaurralde/go-dotnet/dotnet" ) func main() { // Load the C# DLL dllPath := "MathForGo.dll" assembly, err := dotnet.LoadAssembly(dllPath) if err != nil { panic(err) } // Get the "Add" method from the assembly method := assembly.Type("Namespace.ClassName").Method("Add") // Call the method with arguments result, err := method.Invoke(2, 3) if err != nil { panic(err) } // Convert the return value to an int numResult, err := result.Int() if err != nil { panic(err) } fmt.Printf("Result: %d\n", numResult) }
In diesem Beispiel wird die Go-Dotnet-Bibliothek zum Laden der C#-DLL verwendet, Rufen Sie die Methode „Add“ ab, rufen Sie sie mit Argumenten auf und konvertieren Sie den Rückgabewert in einen int.
Hinweis: Dieser Ansatz unterscheidet sich von der Verwendung von Syscall zum Laden von C/C-DLLs. Die Go-Dotnet-Bibliothek übernimmt die Konvertierung zwischen Go-Typen und .NET-Typen und ist damit eine bequemere Lösung zum Aufrufen von in C# geschriebenem Code.
Das obige ist der detaillierte Inhalt vonWie kann ich C#-DLLs aus meinen Go-Anwendungen aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!