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