我使用的是go插件包,并且按照指南进行操作,他们说我应该使用buildmode=plugin
创建一个iso文件,并且输出应具有扩展名so
。这是经验法则吗?我应该总是添加扩展名吗?还是口味问题?
谢谢!
答案 0 :(得分:0)
通常,插件(有时称为共享/动态库)的扩展取决于它们在其上运行的平台。
对于Windows,该扩展名通常为.dll
(对于“动态链接库”)。但是,在撰写本文时,Go不支持Windows插件。
对于Linux / BSD系统,该扩展名通常为.so
(对于“共享对象”),这是Go文档建议您使用的。
在documentation for the plugin
package之后,在Linux上看起来像这样:
// after go build -buildmode=plugin -o plugin_name.so
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"
简而言之:使用.so
。