Golang:Golang生成動態庫及呼叫
阿新 • • 發佈:2019-02-16
簡介
目前go動態庫的生產只支援Linux,Windows下會報這樣的錯誤,`-buildmode=plugin not supported on windows/amd64`
CODE
plugin.so
package main
import (
"fmt"
)
func DCall(){
fmt.Println("plugin.so was called")
}
func DCallWithParam(msg string){
fmt.Println("引數內容為:",msg)
}
func main() {
fmt .Println("goroute全部退出")
}
pluginload.go
package main
import (
"plugin"
)
func main() {
//載入動態庫
p, err := plugin.Open("plugin.so")
if err != nil {
panic(err)
}
//查詢函式
f, err := p.Lookup("DCall")
if err != nil {
panic(err)
}
//轉換型別後呼叫函式
f.(func ())()
f2, err := p.Lookup("DCallWithParam")
if err != nil {
panic(err)
}
//帶參函式的呼叫
f2.(func(string))("hello world,plugin.so")
}
編譯動態庫
go build --buildmode=plugin plugin.go
呼叫動態庫
go run pluginload.go