Utiliser des DLL C# dans les applications Go
Appeler des DLL C# à partir d'applications Go présente un défi unique. Alors que les DLL C/C peuvent être chargées à l'aide de syscall, les assemblys C# ont un format différent.
Bibliothèque Go-Dotnet
Heureusement, un projet GitHub appelé go-dotnet ( https://github.com/matiasinsaurralde/go-dotnet) comble le fossé. Cette bibliothèque permet aux applications Go de charger et d'utiliser des assemblys .NET, y compris des DLL C#.
Exemple d'utilisation
Voici un exemple de la façon d'appeler une simple DLL C# qui ajoute deux nombres :
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) }
Dans cet exemple, la bibliothèque Go-Dotnet est utilisée pour charger la DLL C#, récupérez la méthode "Add", invoquez-la avec des arguments et convertissez la valeur de retour en int.
Remarque : Cette approche est différente de l'utilisation d'un appel système pour charger des DLL C/C. La bibliothèque Go-Dotnet gère la conversion entre les types Go et les types .NET, ce qui en fait une solution plus pratique pour appeler du code écrit en C#.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!