Go 애플리케이션에서 C# DLL 사용: 가능합니까?
Go 애플리케이션에서 C# DLL을 호출하는 것은 일부 사람들에게 토론 주제였습니다. C나 C DLL을 사용하는 것처럼 간단한 프로세스는 아니지만 외부 도구의 도움으로 가능합니다.
Go의 현재 가능성
현재 Go에서 C# DLL을 직접 사용할 수 있는 옵션은 제한되어 있습니다. golang.org/x/sys/windows 패키지는 Go에서 Windows DLL을 호출하기 위한 일부 지원을 제공하지만 C# DLL로 확장되지는 않습니다.
대체 솔루션
다행히 go-dotnet이라는 GitHub 프로젝트는 Go와 .NET 어셈블리 간의 격차를 줄이는 것을 목표로 합니다. go-dotnet은 COM 기반 상호 운용성 라이브러리를 통합하여 Go 애플리케이션이 C# 메서드를 호출할 수 있게 해줍니다.
예
go-dotnet 사용 방법을 시연하기 위해 다음을 고려해 보겠습니다. 두 개의 숫자를 추가하는 간단한 C# DLL:
public class Adder { public static int Add(int a, int b) { return a + b; } }
Go에서는 다음을 사용할 수 있습니다. go-dotnet을 이 DLL과 인터페이스하려면:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!