从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

回到顶部