Go アプリケーションでの C# DLL の使用: 実行できますか?
Go アプリケーションからの C# DLL の呼び出しは、一部で話題になっています。 C や C DLL を使用するような単純なプロセスではありませんが、外部の助けを借りて実行できます。 library.
Go の現在の可能性
現時点では、Go で C# DLL を直接使用するためのオプションは限られています。 golang.org/x/sys/windows パッケージは、Go から Windows DLL を呼び出すためのサポートを提供しますが、C# DLL には拡張されません。
代替ソリューション
ありがたいことに、GitHub 上の go-dotnet という名前のプロジェクトは、Go と .NET の間のギャップを埋めることを目的としています。アセンブリ。 COM ベースの相互運用ライブラリを統合することにより、go-dotnet は Go アプリケーションで C# メソッドを呼び出すことができるようになります。
例
go-dotnet の使用方法を示すために、次のことを考えてみましょう。 2 つの数値を加算する単純な C# DLL:
public class Adder { public static int Add(int a, int b) { return a + b; } }
Go では、次を使用できます。この DLL とインターフェイスする go-dotnet:
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" }
go-dotnet が適切に機能するには、システム パスの調整や COM 相互運用をサポートする Go のバージョンの使用など、追加のセットアップが必要な場合があることに注意してください。
以上がGo アプリケーションは C# DLL を直接使用できますか? 使用できない場合、どのような回避策がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。