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.lua303.1400001049042