질문: Go 애플리케이션이 정적 객체(.so) 파일의 함수와 상호 작용할 수 있습니까?
답변: 예, 함수를 로드하고 호출하는 것이 가능합니다. Go를 사용하여 라이브러리에서. 그러나 내장된 syscall 패키지는 온라인에서 반대 주장에도 불구하고 LoadLibrary 기능을 제공하지 않습니다.
이를 달성하려면 C와 Go 코드를 연결하는 도구인 cgo를 활용할 수 있습니다. 다음은 POSIX C 라이브러리의 dlopen 및 관련 함수를 사용하는 예입니다.
<code class="go">// #cgo LDFLAGS: -ldl // #include <dlfcn.h> import "C" import fmt func foo() { handle := C.dlopen(C.CString("libfoo.so"), C.RTLD_LAZY) bar := C.dlsym(handle, C.CString("bar")) fmt.Printf("bar is at %p\n", bar) }</code>
이 예에서는
이 접근 방식을 따르면 다음에서 함수를 원활하게 호출할 수 있습니다. Go 코드의 외부 라이브러리.
위 내용은 Go 애플리케이션이 .so 파일 내부의 기능과 어떻게 상호 작용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!