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
793 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!

source:php.cn
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