我正在尝试使用Go的插件系统。即使有一个非常基本的示例,我也无法在已编译的插件中找到任何符号。我的设置如下:
/Users/blah/test-workspace/
src/
main/
main.go
plug/
plug.go
plug.go
看起来像这样:
package main
type B struct {}
func main() {}
在/Users/blah/test-workspace/
目录中,我使用以下命令构建该文件:
GOPATH="/Users/blah/test-workspace" go build -buildmode plugin plug
这将在GOPATH的根目录内产生p.so
。接下来,我尝试通过main/main.go
加载此插件:
package main
import (
"fmt"
"plugin"
"os"
)
func main() {
plugin, err := plugin.Open("plug.so")
if err != nil {
fmt.Printf("Error: %+v\n", err)
os.Exit(1)
}
fmt.Printf("%+v\n", plugin)
}
此代码的输出是:
&{pluginpath:plug err: loaded:0xc420088060 syms:map[]}
如您所愿,符号图为空。我究竟做错了什么?