添加动态库示例代码及CLI测试程序

This commit is contained in:
kingecg 2025-09-19 21:06:03 +08:00
parent 7be2098072
commit 92c958c9c4
3 changed files with 68 additions and 0 deletions

38
example/ex/cli/main.go Normal file
View File

@ -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))
}

30
example/ex/dll/main.go Normal file
View File

@ -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() {
// 空函数,仅用于编译
}

BIN
example/ex/main Executable file

Binary file not shown.