Maison > développement back-end > Golang > Comment puis-je appeler des DLL C# à partir de mes applications Go ?

Comment puis-je appeler des DLL C# à partir de mes applications Go ?

Mary-Kate Olsen
Libérer: 2024-12-26 04:17:13
original
852 Les gens l'ont consulté

How Can I Call C# DLLs from My Go Applications?

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)
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal