Go “戈朗”;插件是用不同版本的软件包“构建的”;测试时

Go “戈朗”;插件是用不同版本的软件包“构建的”;测试时,go,plugins,Go,Plugins,我正在开发一个项目,其中插件是在启动时构建的: func BuildPlugin(路径*字符串)错误{ buildGo:=“go” buildArgs:=[]字符串{ “建造”, “-buildmode=plugin”, “-o”, filepath.Join(*路径,“ext/ext.so”), filepath.Join(*路径,“ext/ext.go”), } cmd:=exec.Command(buildGo、buildArgs…) _,err:=cmd.Output() 如果错误!=零

我正在开发一个项目,其中插件是在启动时构建的:

func BuildPlugin(路径*字符串)错误{
buildGo:=“go”
buildArgs:=[]字符串{
“建造”,
“-buildmode=plugin”,
“-o”,
filepath.Join(*路径,“ext/ext.so”),
filepath.Join(*路径,“ext/ext.go”),
}
cmd:=exec.Command(buildGo、buildArgs…)
_,err:=cmd.Output()
如果错误!=零{
返回错误
}
归零
}
当我运行程序时,插件加载成功,但是当我运行测试时,我得到以下错误:

fsm_test.go:34:plugin.Open(“../examples/00_test/ext/ext”):插件是用不同版本的包github.com/jaimeteb/chatto/fsm构建的

我读过一些类似问题的解决方案,但没有一个有效


这就是正在讨论的项目:

Go插件非常漂亮,但它们最大的缺点是,构建插件和消费者二进制文件所使用的Go版本必须完全匹配。这真的是最大的一件事,让我无法更频繁地使用它们,而是选择了基于RPC的插件库,比如
hashicorp/go-plugin

如果您选择继续使用Go插件,那么无论何时更改Go的版本,或者甚至是构建消费项目,您都需要重新构建项目的插件