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

我有一个在启动时加载插件的应用程序(守护进程)。在子包(守护程序/接口)中,我有一些该程序的插件应该使用的接口。

这意味着主程序也由插件导入。

我正在使用 Go 模块(用于主程序和插件)来修复版本,我可以看到go.mod它正在使用插件的主程序的最新版本。

我可以很好地构建它们,但是当我加载插件时,它会给我一个错误

 panic: plugin.Open("plugins/my-plugin"): plugin was built with a different version of package daemon/interfaces

我正在使用 Go 1.12.7 来构建这两个包。


阿波罗的战车
浏览 117回答 2
2回答

跃然一笑

go.mod我通过在插件文件中添加替换语句来修复此问题module github.com/user/plugingo 1.12require (    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/当您使用项目的全名 ( )从源代码所在的目录外部构建项目时,它也会有所帮助

喵喵时光机

请查看下面的历史记录以了解详细信息。git clone https://github.com/zimnx/central.gitgit clone https://github.com/zimnx/plugins.gitcd central/go clean -modcachegit checkout v1.0.0go install -acd ../plugins/rm go.mod go mod init github.com/zimnx/pluginsecho '' >> go.modecho 'replace github.com/zimnx/central => ../central' >> go.modgo build -buildmode=plugin -o plugin.socentral plugin.so 对我有用。仍然是个谜……:)输出已被保存以供最好奇的人使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go