I have the following two files: // hello.go package main
import ( "fmt" ) func Hello() { fmt.Println("hello") } func main() {} build as plugin: `go build -buildmode=plugin hello.go` // main.go package main import ( "log" "plugin" "time" ) func main() { for { log.Println("start load plugin.") time.Sleep(time.Second) p, err := plugin.Open("../hello.so") if err != nil { log.Println(err) continue } sym, err := p.Lookup("Hello") if err != nil { log.Println(err) continue } hello, ok := sym.(func()) if !ok { log.Println(err) continue } for i := 0; i < 10; i++ { hello() time.Sleep(time.Second) } } } // `go build main.go` main.go keeps calling the Hello function from hello.so file. I tried to modify the hello.go file, and re-built the hello.so file. The so file was successfully replaced. However, the main process was still printing the old world "hello". It seems the so file in memory was not changed, even the main program reloaded the so file once for a while. Restarting the main process could make it work. But it is not what i am looking for. How could I dynamically update the so file and make it applied in main process? Thanks. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.