gpt4 book ai didi

go - 第三方库(闭源)

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:55 38 4
gpt4 key购买 nike

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

它不是作为可执行文件分发的,而是在编译或运行时带有接口(interface)的可链接静态或共享库。 (就像在 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{}

查看对 Plugin 的内置支持去了解更多信息

关于go - 第三方库(闭源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55872856/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com