【问题标题】:How difficult is the LuaJIT FFI?LuaJIT FFI 有多难?
【发布时间】:2011-08-07 05:40:27
【问题描述】:

我最近研究了 Lua,它看起来非常好。唯一令人讨厌的是它缺乏(标准)库。但是 JIT 编译器附带了一个不错的 FFI C 接口。

来自 java 背景,我尽量避免使用 C,所以我的问题是:有没有人对 LuaJIT 有一些经验,尤其是它的 FFI 接口,以及为几乎没有不懂C?

【问题讨论】:

    标签: c lua ffi luajit


    【解决方案1】:

    对我来说似乎很简单,Mike Pall 有一些很好的教程here,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 接受并返回 floats 而不是 doubles。有效的声明应为:ffi.cdef([[ float powf(float x, float y); ]])
      • 你是对的。 powf 将浮点数作为参数,而不是双精度数。感谢您指出这一点。
      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 2015-10-13
      • 2018-01-21
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      相关资源
      最近更新 更多