我有一个在启动(守护程序)时加载插件的应用程序。在一个子包(守护程序/接口)中,我有一些该程序的插件应使用的接口。
这意味着主程序也将通过插件导入。
我正在使用Go模块(用于主程序和插件)来修复版本,并且在insert into tbname (xxx1),(xxx2),(xxx3)...;
中可以看到它正在使用插件的主程序的最新版本。
我都可以很好地构建它们,但是当我加载插件时,它会提示我一个错误
go.mod
我正在使用Go 1.12.7构建这两个软件包。
答案 0 :(得分:1)
我通过在插件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/
从源代码所在目录的外部构建项目时,它也很有帮助
Golang存储库that you can find here
上有一个相关的Github问题。答案 1 :(得分:0)
显然,the issue仍处于打开状态。问题解决工具提供了解决方法,我可以使用它。请查看下面的历史记录行以了解详细信息。
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
为我工作。 Mistery仍然... :) The output已被保存下来,以示最好奇。