Go插件中没有符号

时间:2018-07-20 02:02:00

标签: go

我正在尝试使用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[]}

如您所愿,符号图为空。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

plugin docs

  

符号是任何导出的变量或函数

您需要添加导出的变量或函数,以使插件正常工作。