从 Go 中的共享对象文件调用函数
可以从 Go 程序中的静态对象(.so)文件调用函数。与流行的说法相反,Go 标准库中不存在 syscall.LoadLibrary 函数。相反,在 POSIX 平台上,您可以利用 cgo 来利用 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>
通过使用 cgo 和适当的系统调用,您可以加载共享对象库并从 Go 程序中调用其导出的函数。
以上是如何在 Go 中从共享对象文件调用函数?的详细内容。更多信息请关注PHP中文网其他相关文章!