C LuaJIT FFI有多难?
我最近调查了Lua,看起来很不错。唯一令人讨厌的是它缺少(标准)库。但是JIT编译器附带了一个很好的FFIC接口C LuaJIT FFI有多难?,c,lua,ffi,luajit,C,Lua,Ffi,Luajit,我最近调查了Lua,看起来很不错。唯一令人讨厌的是它缺少(标准)库。但是JIT编译器附带了一个很好的FFIC接口 来自java背景的我尽量避免使用C,所以我的问题是:有没有人对LuaJIT有一些经验,尤其是它的FFI接口,为一个对C知之甚少或一无所知的人建立一个库有多困难?对我来说似乎很简单,Mike Pall有一些很好的教程,lua邮件列表还包括一些很好的示例,所以也可以查看归档文件 为一个几乎没有钱的人建立一个图书馆有多难 C语言知识 真的很容易。首先,您需要声明要使用的函数。然后,加载目标
来自java背景的我尽量避免使用C,所以我的问题是:有没有人对LuaJIT有一些经验,尤其是它的FFI接口,为一个对C知之甚少或一无所知的人建立一个库有多困难?对我来说似乎很简单,Mike Pall有一些很好的教程,lua邮件列表还包括一些很好的示例,所以也可以查看归档文件 为一个几乎没有钱的人建立一个图书馆有多难 C语言知识 真的很容易。首先,您需要声明要使用的函数。然后,加载目标库并将其分配给Lua变量。使用该变量调用外部函数 下面是一个使用C的数学库中的函数
powf
的示例
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))
不幸的是,这个例子不起作用
powf
获取并返回float
s notdouble
s。一个有效的声明应该是:ffi.cdef([[float-powf(float-x,float-y);]])
你说得对powf
将浮点数作为参数,而不是双精度浮点数。谢谢你指出这一点。