> 백엔드 개발 > Golang > C DLL 함수를 Go로 어떻게 가져올 수 있나요?

C DLL 함수를 Go로 어떻게 가져올 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-08 19:30:17
원래의
884명이 탐색했습니다.

How Can I Import a C DLL Function into Go?

Go를 사용하여 C로 작성된 DLL 함수 가져오기

Go를 사용하여 C로 작성된 DLL에서 함수를 가져오려면 여러 가지 접근 방식을 사용할 수 있습니다. .

옵션 1: cgo

cgo 패키지를 사용하면 Go 코드에서 C 함수를 직접 호출할 수 있습니다. 그렇게 하려면:

import "C"

C.SomeDllFunc(...)
로그인 후 복사

옵션 2: syscall

syscall 패키지를 사용하여 DLL에서 함수를 로드하고 호출할 수 있습니다. 예는 다음과 같습니다.

import (
    "fmt"
    "syscall"
    "unsafe"
)

kernel32, _        := syscall.LoadLibrary("kernel32.dll")
getModuleHandle, _ := syscall.GetProcAddress(kernel32, "GetModuleHandleW")

func GetModuleHandle() uintptr {
    ret, _, _ := syscall.Syscall(uintptr(getModuleHandle), 0, 0, 0, 0)
    return ret
}
로그인 후 복사

옵션 3: 도우미 라이브러리 사용

GitHub는 Go에서 DLL과의 인터페이스 프로세스를 단순화하는 페이지를 호스팅합니다: https:/ /github.com/golang/go/wiki/WindowsDLLs.

요약하면 세 가지가 있습니다. Go를 사용하여 C로 작성된 DLL 함수를 가져오는 기본 방법: cgo, syscall 및 도우미 라이브러리. 각 접근 방식에는 장점과 단점이 있으므로 개발자는 특정 요구 사항에 가장 적합한 방법을 선택할 수 있습니다.

위 내용은 C DLL 함수를 Go로 어떻게 가져올 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿