添加动态库示例代码及CLI测试程序
This commit is contained in:
parent
7be2098072
commit
92c958c9c4
|
|
@ -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))
|
||||
}
|
||||
|
|
@ -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() {
|
||||
// 空函数,仅用于编译
|
||||
}
|
||||
Binary file not shown.
Loading…
Reference in New Issue