DllImport Equivalent를 사용하여 Go로 DLL 함수 가져오기
문제 설명
C#에서, DllImport는 C로 작성된 DLL에서 함수를 가져오는 데 사용됩니다. C에서 생성된 DLL 함수를 가져올 수 있는 유사한 메커니즘을 Go에서 사용할 수 있습니까?
CGO 및 Syscall을 사용한 솔루션
DLL 함수를 Go로 가져오는 방법에는 여러 가지가 있습니다. 한 가지 방법은 C 코드에 대한 Go 바인딩 생성을 용이하게 하는 cgo 패키지를 사용하는 것입니다. cgo를 사용하면 마치 Go 함수인 것처럼 DLL 함수를 직접 호출할 수 있습니다.
또 다른 방법은 syscall 패키지를 활용하는 것입니다. 이를 통해 DLL 로딩 및 함수 호출을 포함하여 시스템의 하위 수준 API와 상호 작용할 수 있습니다. 메모리를 명시적으로 관리하고 필요한 시스템 기능을 호출하면 syscall을 사용하여 DLL 함수를 가져올 수 있습니다.
CGO용 예제 코드
import "C" func main() { C.SomeDllFunc(...) }
CGO용 예제 코드 시스콜
import ( "fmt" "syscall" "unsafe" ) func main() { kernel32, _ := syscall.LoadLibrary("kernel32.dll") getModuleHandle, _ := syscall.GetProcAddress(kernel32, "GetModuleHandleW") handle := GetModuleHandle() fmt.Println(handle) } func GetModuleHandle() uintptr { var nargs uintptr = 0 ret, _, _ := syscall.Syscall(uintptr(getModuleHandle), nargs, 0, 0, 0) return ret }
추가 리소스
자세한 내용은 다음 리소스를 참조하세요.
위 내용은 C DLL 함수를 Go로 어떻게 가져올 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!