我最近研究了 Lua,它看起来真的很不错。唯一令人讨厌的是它缺乏(标准)库。但是 JIT 编译器附带了一个不错的 FFI C 接口。
来自 java 背景,我尽量避免使用 C,所以我的问题是:有没有人对 LuaJIT 有一些经验,尤其是它的 FFI 接口,以及为几乎没有知识的人建立一个库有多困难C?
对我来说似乎很简单,Mike Pall 在这里有一些很好的教程,lua 邮件列表也包含一些很好的例子,所以也请查看档案
为几乎没有 C 知识的人建立一个库有多难?
真的很容易。首先,您需要声明要使用的函数。然后,加载目标库并将其分配给 Lua 变量。使用该变量调用外部函数。
powf
这是使用C 数学库中的函数的示例。
local ffi = require("ffi")
-- Whatever you need to use, have to be declared first
ffi.cdef([[
double powf(double x, double y);
]])
-- Name of library to load, i.e: -lm (math)
local math = ffi.load("m")
-- Call powf
local n, m = 2.5, 3.5
print(math.powf(n, m))