Closed lsg2020 closed 2 years ago
当一个文件引用的模块比较多时,每个模块都用go install编译会比较繁锁,能直接加载/卸载 plugin编译出来的so文件吗
不能加载.so
You may be interested in the JIT compiler in #66.
You can simply do:
loadable, err = jit.BuildGoFiles(jit.BuildConfig{}, "./path/to/file1.go", "/path/to/file2.go")
// or
loadable, err = jit.BuildGoPackage(jit.BuildConfig{}, "./path/to/package")
// or
loadable, err = jit.BuildGoText(jit.BuildConfig{}, `
package mypackage
import "encoding/json"
func MyFunc(input []byte) (interface{}, error) {
var output interface{}
err := json.Unmarshal(input, &output)
return output, err
}
`)
if err != nil {
panic(err)
}
module, symbols, err = loadable.Load()
if err != nil {
panic(err)
}
MyFunc := symbols["MyFunc"].(func([]byte) (interface{}, error))
当一个文件引用的模块比较多时,每个模块都用go install编译会比较繁锁,能直接加载/卸载 plugin编译出来的so文件吗