LuaJIT FFI 有多难?

10

我最近研究了 Lua,发现它非常好用。唯一令人烦恼的是其缺乏(标准)库。但是随着 JIT 编译器的推出,一个很好的 FFI C 接口也随之而来。

作为一个 Java 背景的开发者,我尽可能地避免使用 C,我的问题是:有没有人在 LuaJIT 上有一些经验,特别是 FFI 接口,对于一个几乎没有 C 知识的人来说设置库有多难?

2个回答

16

对我来说似乎非常简单,Mike Pall在这里有一些不错的教程,lua邮件列表也包括一些很好的例子,所以也请查看归档


2

对于一个几乎没有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 而不是 double。有效的声明应该是:ffi.cdef([[ float powf(float x, float y); ]]) - jpc
你说得对。powf函数的参数应该是浮点数,而不是双精度浮点数。感谢你指出这一点。 - Diego Pino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接