代码之家  ›  专栏  ›  技术社区  ›  Max

go插件中没有符号

go
  •  0
  • Max  · 技术社区  · 6 年前

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

    这产生 p.so 在Gopath的根部。接下来我尝试通过 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 回复  |  直到 6 年前
        1
  •  1
  •   JimB    6 年前

    来自 plugin docs

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

    您需要添加一个导出的变量或函数,以便插件工作。