在 Go 應用程式中使用 C# DLL
從 Go 應用程式呼叫 C# DLL 提出了獨特的挑戰。雖然 C/C DLL 可以使用系統呼叫加載,但 C# 組件具有不同的格式。
Go-Dotnet 庫
幸運的是,有一個名為go-dotnet 的GitHub 專案( https://github.com/matiasinsaurralde/go-dotnet )彌補了這一差距。該程式庫允許 Go 應用程式載入和利用 .NET 組件,包括 C# DLL。
範例用法
以下是如何呼叫簡單的C# DLL 的範例,該範例新增了兩個數字:
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) }
在此範例中,Go-Dotnet 函式庫用於載入C# DLL,檢索「Add」方法,使用參數呼叫它,並將傳回值轉換為int。
注意:這種方法與使用 syscall 載入 C/C 不同DLL。 Go-Dotnet 程式庫處理 Go 類型和 .NET 類型之間的轉換,使其成為呼叫 C# 編寫的程式碼更方便的解決方案。
以上是如何從我的 Go 應用程式呼叫 C# DLL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!