Maison >développement back-end >Golang >Les applications Go peuvent-elles utiliser directement les DLL C#, et sinon, quelles solutions existent ?
Utilisation de DLL C# dans les applications Go : est-ce possible ?
L'appel de DLL C# à partir d'applications Go a été un sujet de discussion pour certains temps, et bien que ce ne soit pas un processus simple comme l'utilisation de DLL C ou C, il est possible avec l'aide de logiciels externes bibliothèques.
Possibilités actuelles dans Go
À l'heure actuelle, les options permettant d'utiliser directement les DLL C# dans Go sont limitées. Le package golang.org/x/sys/windows fournit une certaine prise en charge pour l'appel de DLL Windows à partir de Go, mais il ne s'étend pas aux DLL C#.
Solution alternative
Heureusement, un projet sur GitHub nommé go-dotnet vise à combler le fossé entre les assemblys Go et .NET. En intégrant une bibliothèque d'interopérabilité basée sur COM, go-dotnet permet aux applications Go d'appeler des méthodes C#.
Exemple
Pour démontrer comment utiliser go-dotnet, considérons une simple DLL C# qui ajoute deux nombres :
public class Adder { public static int Add(int a, int b) { return a + b; } }
Dans Go, nous pouvons utiliser go-dotnet pour s'interfacer avec ceci 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" }
Veuillez noter qu'une configuration supplémentaire peut être nécessaire pour que go-dotnet fonctionne correctement, comme l'ajustement des chemins système ou l'utilisation d'une version de Go prenant en charge l'interopérabilité COM.
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!