Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya Boleh Memanggil C# DLL daripada Aplikasi My Go?

Bagaimanakah saya Boleh Memanggil C# DLL daripada Aplikasi My Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 04:17:13825semak imbas

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

Menggunakan C# DLL dalam Aplikasi Go

Memanggil C# DLL daripada aplikasi Go memberikan cabaran yang unik. Walaupun DLL C/C boleh dimuatkan menggunakan syscall, himpunan C# mempunyai format yang berbeza.

Pustaka Go-Dotnet

Nasib baik, projek GitHub yang dipanggil go-dotnet ( https://github.com/matiasinsaurralde/go-dotnet) merapatkan jurang. Pustaka ini membenarkan aplikasi Go untuk memuatkan dan menggunakan himpunan .NET, termasuk C# DLL.

Contoh Penggunaan

Berikut ialah contoh cara memanggil C# DLL mudah yang menambah dua nombor:

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)
}

Dalam contoh ini, perpustakaan Go-Dotnet digunakan untuk muatkan C# DLL, dapatkan semula kaedah "Tambah", gunakannya dengan argumen dan tukar nilai pulangan kepada int.

Nota: Pendekatan ini berbeza daripada menggunakan syscall untuk memuatkan C /C DLL. Pustaka Go-Dotnet mengendalikan penukaran antara jenis Go dan jenis .NET, menjadikannya penyelesaian yang lebih mudah untuk kod panggilan yang ditulis dalam C#.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Memanggil C# DLL daripada Aplikasi My Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn