golang插件如何验证包的版本?

cnb*_*nby 5 plugins go

我正在尝试使用 golang 插件,但在调用时总是出现运行时错误plugin.Open

plugin.Open: plugin was built with a different version of package

我确信该插件是使用相同的代码构建的。现在我对错误消息完全感到困惑。

这些验证机制如何工作?

pet*_*rSO 1

src/runtime/plugin.go:

for _, pkghash := range md.pkghashes {
    if pkghash.linktimehash != *pkghash.runtimehash {
        md.bad = true
        return "", nil, "plugin was built with a different version of package " + pkghash.modulename
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答@peterSO。你能描述一下如何计算“linktimehash”和“runtimehash”吗? (3认同)