C LuaJIT FFI有多难?

C LuaJIT FFI有多难?,c,lua,ffi,luajit,C,Lua,Ffi,Luajit,我最近调查了Lua,看起来很不错。唯一令人讨厌的是它缺少(标准)库。但是JIT编译器附带了一个很好的FFIC接口 来自java背景的我尽量避免使用C,所以我的问题是:有没有人对LuaJIT有一些经验,尤其是它的FFI接口,为一个对C知之甚少或一无所知的人建立一个库有多困难?对我来说似乎很简单,Mike Pall有一些很好的教程,lua邮件列表还包括一些很好的示例,所以也可以查看归档文件 为一个几乎没有钱的人建立一个图书馆有多难 C语言知识 真的很容易。首先,您需要声明要使用的函数。然后,加载目标

我最近调查了Lua,看起来很不错。唯一令人讨厌的是它缺少(标准)库。但是JIT编译器附带了一个很好的FFIC接口


来自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 not
double
s。一个有效的声明应该是:
ffi.cdef([[float-powf(float-x,float-y);]])
你说得对
powf
将浮点数作为参数,而不是双精度浮点数。谢谢你指出这一点。