登录
首页 >  Golang >  Go问答

从 Go 调用 so 文件中的函数

来源:Golang技术栈

时间:2023-04-13 18:51:51 296浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《从 Go 调用 so 文件中的函数》,以下内容将会涉及到golang,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

是否可以从 Go 调用静态对象 (.so) 文件?我一直在谷歌搜索,我一直在声称我可以做到

lib, _ := syscall.LoadLibrary("...")

但是尝试这样做会出错

undefined: syscall.LoadLibrary

并通过 Godocs 搜索我在 syscall 包中找不到对此函数的引用。是否可以加载库并调用其函数?

正确答案

在 POSIX 平台上,您可以cgo用来调用dlopen和朋友:

// #cgo LDFLAGS: -ldl
// #include 
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 文件中的函数》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>