mylib.c:
int add(int x, int y) {
return x + y;
}
float get_float_value() {
return 3.14;
}
编译:
gcc -shared -fPIC -o libmylib.so mylib.c
注意:
test.lua:
-- 加载 ffi 库
local ffi = require("ffi")
-- 定义 C 函数原型
ffi.cdef("int add(int x, int y);")
ffi.cdef("float get_float_value();")
-- 定义动态连接库路径
local lib_path = "mylib.so"
-- 加载动态连接库
local mylib = ffi.load(lib_path)
-- 调用动态连接库中的函数
print(mylib.add(10, 20))
local result = ffi.cast("float", mylib.get_float_value())
print(tonumber(result))
执行:
$ /usr/local/bin/luajit test.lua
30
3.1400001049042