Contents

Go Plugin

Contents

go plugin

[serialt@Krab plugin]๐Ÿณ tree .
.
โ”œโ”€โ”€ go.mod
โ”œโ”€โ”€ kk
โ”‚   โ”œโ”€โ”€ kk.go
โ”‚   โ””โ”€โ”€ kk.so
โ”œโ”€โ”€ ks
โ””โ”€โ”€ main.go
// kk.go
package main

import "fmt"

func Greet(name string) {
	fmt.Println("Hello", name)
}

func main() {}


// main.go
package main

import (
	"log"
	"plugin"
)

func main() {
	p, err := plugin.Open("./kk/kk.so")
	if err != nil {
		log.Fatal(err)
	}
	greet, err := p.Lookup("Greet")
	if err != nil {
		log.Fatal(err)
	}
	greet.(func(string))("Go")
}

็ผ–่ฏ‘ๆ’ไปถ

cd kk && go build -buildmode=plugin 

็ผ–่ฏ‘ไธปๆœๅŠก่ฐƒ็”จๆ’ไปถ

[root@Krab plugin]๐Ÿณ go build 
[root@Krab plugin]๐Ÿณ ./ks 
Hello Go