Lua FFI Library

查看原文

本文是 LuaJit 的 FFI 文档,这个库用于在 Lua 中调用 C 的函数和使用 C 的数据结构。基本使用是你要事先使用 cdef 把 c header 的内容复制进来,然后给予更底层的 ffi 接口封装函数 inline, jit, 回调函数绑定和垃圾收集。hello world:

local ffi = require('ffi')
ff.cdef('int pref(const char *fmt, …);')
ffi.C.printf("Hello %s", "world")

如果要自定义 struct, 也可以用 cdef / new 来定义和添加:

local ffi = require('ffi')
ffi.cdef('typedef struct {uint8_t r, g, b, a} rgba_t'')
local img = ffi.new('rgba_t[?]', 10)