从Go的so文件中调用函数
是否可以从Go调用静态对象(.so)文件?我一直在搜寻Google,我不断提出我可以做到的主张
lib, _ := syscall.LoadLibrary("...")
但是尝试这样做会出现错误
undefined: syscall.LoadLibrary
并搜索Godocs,但在syscall包中找不到对此功能的引用。是否可以加载库并调用其函数?
回答:
在POSIX平台上,您可以cgo
用来调用dlopen和朋友:
// #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)
}
以上是 从Go的so文件中调用函数 的全部内容, 来源链接: utcz.com/qa/424387.html