ホームページ >バックエンド開発 >Golang >Go アプリケーションは C# DLL を直接使用できますか? 使用できない場合、どのような回避策がありますか?

Go アプリケーションは C# DLL を直接使用できますか? 使用できない場合、どのような回避策がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 09:14:16816ブラウズ

Can Go Applications Directly Use C# DLLs, and If Not, What Workarounds Exist?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。