首页 > 解决方案 > 不向 dll 或 iso 文件添加扩展名是一种不好的做法吗?

问题描述

我正在使用 go 插件包,并按照指南,他们说我应该使用创建一个 iso 文件,buildmode=plugin并且输出应该具有扩展名so. 这是经验法则吗?我应该总是添加扩展名吗?还是口味问题?

谢谢!

标签: godll

解决方案


通常,插件(有时称为共享/动态库)具有依赖于它们运行的​​平台的扩展。

对于 Windows,该扩展名往往是.dll(对于“动态链接库”)。但是,在撰写本文时,Go 不支持 Windows 插件。

对于 Linux/BSD 系统,该扩展往往是.so(用于“共享对象”)这是 Go 文档建议您使用的。

按照package的文档plugin,它看起来像这样(在 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.


推荐阅读