【发布时间】:2018-12-26 00:20:51
【问题描述】:
我需要编写一个带有接受 golang 字节数组的函数的 golang 插件,但是当我在客户端代码中加载插件后尝试调用此函数时,它总是给我
panic:运行时错误:无效的内存地址或 nil 指针取消引用 [信号SIGSEGV:分段违规代码=0x1 addr=0x18 pc=0x40b22af]
关于如何解决这个问题的任何建议?
要重现的代码(高度简化,但会出现同样的错误)
client.go
package main
import (
"plugin"
"log"
)
type T interface {
sayHi(data []byte)
}
func main() {
plgin, _ := plugin.Open("./plugin.so")
symbol, _ := plgin.Lookup("Endpoint")
b, _ := symbol.(T)
log.Println("From main")
data := []byte{1,2,3,4,5}
b.sayHi(data)
}
plugin.go(这个程序是用buildmode=plugin构建的)
package main
import (
"log"
)
type dummy struct {}
func (d dummy)sayHi(data []byte) {
log.Println("From plugin")
log.Println(data)
}
var Endpoint dummy
func main() {
}
【问题讨论】:
标签: go plugins segmentation-fault