为了账号安全,请及时绑定邮箱和手机立即绑定

Go 插件 - “插件是使用不同版本的包构建的”

Go 插件 - “插件是使用不同版本的包构建的”

Go
阿波罗的战车 2023-07-10 16:32:30
我有一个在启动时加载插件的应用程序(守护进程)。在子包(守护程序/接口)中,我有一些该程序的插件应该使用的接口。这意味着主程序也由插件导入。我正在使用 Go 模块(用于主程序和插件)来修复版本,我可以看到go.mod它正在使用插件的主程序的最新版本。我可以很好地构建它们,但是当我加载插件时,它会给我一个错误 panic: plugin.Open("plugins/my-plugin"): plugin was built with a different version of package daemon/interfaces我正在使用 Go 1.12.7 来构建这两个包。
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

go.mod我通过在插件文件中添加替换语句来修复此问题


module github.com/user/plugin


go 1.12


require (

    github.com/user/daemon v1.1.1

)


replace github.com/user/daemon v1.1.1 => ../local/path/to/daemon/

go build github.com/user/project/当您使用项目的全名 ( )从源代码所在的目录外部构建项目时,它也会有所帮助

查看完整回答
反对 回复 2023-07-10
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

请查看下面的历史记录以了解详细信息。

git clone https://github.com/zimnx/central.git

git clone https://github.com/zimnx/plugins.git

cd central/

go clean -modcache

git checkout v1.0.0

go install -a

cd ../plugins/

rm go.mod 

go mod init github.com/zimnx/plugins

echo '' >> go.mod

echo 'replace github.com/zimnx/central => ../central' >> go.mod

go build -buildmode=plugin -o plugin.so

central plugin.so 

对我有用。仍然是个谜……:)输出已被保存以供最好奇的人使用。



查看完整回答
反对 回复 2023-07-10
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信