登录
首页 >  Golang >  Go问答

3rd 方库(闭源)

来源:stackoverflow

时间:2024-04-03 14:30:36 214浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《3rd 方库(闭源)》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

有没有一种方法可以用 go 语言使用一堆源文件构建二进制文件(共享或静态库),并将其与其接口一起分发。

它不是作为可执行文件分发,而是作为可链接的静态库或共享库,在编译或运行时具有接口。 (就像在 C 中一样,您将 .a.so 文件与头文件一起分发)

与基于 github 的开源库不同,它是一个闭源项目,我正在尝试将其移植到 Go。


解决方案


是的,这是可能的。您可以将代码构建为静态库并在运行时使用以下命令链接它:

go build -buildmode=plugin

您可以使用这样的内置插件:

符号是指向变量或函数的指针。

例如,一个插件定义为

package main

import "fmt"

var v int

func f() { fmt.printf("hello, number %d\n", v) }

可以用open函数加载,然后可以访问导出的包符号v和f

p, err := plugin.Open("plugin_name.so")
if err != nil {
    panic(err)
}
v, err := p.Lookup("V")
if err != nil {
    panic(err)
}
f, err := p.Lookup("F")
if err != nil {
    panic(err)
}
*v.(*int) = 7
f.(func())() // prints "Hello, number 7"


type Symbol interface{}

查看 go 中对 Plugin 的内置支持以获取更多信息

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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