您的位置:首页 > 编程语言 > Lua

LuaJit ffi 访问C中的结构体

2016-04-08 13:18 1716 查看
LuaJit是另一个Lua语言的解析器。

LuaJIT 是采用 C 和汇编语言编写的 Lua 解释器与即时编译器。LuaJIT 被设计成全兼容标准的 Lua 5.1 语言,同时可选地支持 Lua 5.2 和 Lua 5.3 中的一些不破坏向后兼容性的有用特性。因此,标准 Lua 语言的代码可以不加修改地运行在 LuaJIT 之上。LuaJIT 和标准 Lua 解释器的一大区别是,LuaJIT 的执行速度,即使是其汇编编写的 Lua 解释器,也要比标准 Lua 5.1 解释器快很多,可以说是一个高效的 Lua 实现。另一个区别是,LuaJIT 支持比标准
Lua 5.1 语言更多的基本原语和特性,因此功能上也要更加强大。

1 编译LuaJit,生成的luajit在src文件下。

没有使用make install,因为没有管理员权限。

2 export PATH=$PATH:.:/data/project/lua-5.3.2/src:/data/project/LuaJIT-2.1.0-beta2/src

3 写一个脚本

test.lua

local ffi = require("ffi")
ffi.cdef[[
typedef struct{
int len;
char value[128];
}MY_PARA;
]]--声明一个结构体

local n = 10
local para = ffi.new("MY_PARA[?]", n)--新建变长的结构体变量
for i=0, n-1 do
para[i].len = i;
para[i].value ="zhao";
end

for i=0, n-1 do
print(para[i].len);
local myname = ffi.string(para[i].value);
print(myname);
end


4 luajit test.lua

0

zhao

1

zhao

2

zhao

3

zhao

4

zhao

5

zhao

6

zhao

7

zhao

8

zhao

9

zhao
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: