diff --git a/example/ex/cli/main.go b/example/ex/cli/main.go new file mode 100644 index 0000000..d1c22b7 --- /dev/null +++ b/example/ex/cli/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "github.com/ebitengine/purego" + "os" + // "unsafe" +) + +func main() { + // 加载动态链接库 + lib, err := purego.Dlopen("/home/kingecg/code/gosh/libgosh.so", purego.RTLD_NOW) + if err != nil { + fmt.Printf("无法加载动态链接库: %v\n", err) + os.Exit(1) + } + + // 定义函数签名 + var ( + Add func(int, int) int + Subtract func(int, int) int + Multiply func(int, int) int + Divide func(int, int) int + ) + + // 注册函数 + purego.RegisterLibFunc(&Add, lib, "Add") + purego.RegisterLibFunc(&Subtract, lib, "Subtract") + purego.RegisterLibFunc(&Multiply, lib, "Multiply") + purego.RegisterLibFunc(&Divide, lib, "Divide") + + // 调用函数并打印结果 + a, b := 10, 5 + fmt.Printf("Add(%d, %d) = %d\n", a, b, Add(a, b)) + fmt.Printf("Subtract(%d, %d) = %d\n", a, b, Subtract(a, b)) + fmt.Printf("Multiply(%d, %d) = %d\n", a, b, Multiply(a, b)) + fmt.Printf("Divide(%d, %d) = %d\n", a, b, Divide(a, b)) +} diff --git a/example/ex/dll/main.go b/example/ex/dll/main.go new file mode 100644 index 0000000..77d7393 --- /dev/null +++ b/example/ex/dll/main.go @@ -0,0 +1,30 @@ +package main + +import "C" + +//export Add +func Add(a, b int) int { + return a + b +} + +//export Subtract +func Subtract(a, b int) int { + return a - b +} + +//export Multiply +func Multiply(a, b int) int { + return a * b +} + +//export Divide +func Divide(a, b int) int { + if b == 0 { + return 0 + } + return a / b +} + +func main() { + // 空函数,仅用于编译 +} \ No newline at end of file diff --git a/example/ex/main b/example/ex/main new file mode 100755 index 0000000..340249f Binary files /dev/null and b/example/ex/main differ