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
4 luajit test.lua
0
zhao
1
zhao
2
zhao
3
zhao
4
zhao
5
zhao
6
zhao
7
zhao
8
zhao
9
zhao
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
相关文章推荐
- Lua语法基础(1)---简介、基本数据类型、表达式
- [LUA] Lua 开发环境搭建 MAC
- lua探索--------------(setfenv、getfenv相关)
- lua的Metatables和Metamethods
- lua脚本之lua语言简介以及lua的安装
- Lua学习笔记-习题9.3
- 云风的博文《Lua C API 的正确用法》读后总结
- evaluateScript--evaluatePopoverScript--区别
- Lua学习笔记-9.4章-非抢占式的多线程
- Lua学习笔记六——package
- LUA require 搜索路径指定方法
- ngx_lua访问数据库
- lua使用table.concat连接大量字符串
- lua探索--------------(_G相关)
- LuaSQLite3 搭建使用过程
- Lua学习教程之 可变參数数据打包与解包
- Programming in Lua
- 我和Lua并非一见钟情,我们期待着日久生情(相遇篇)
- Embedding LuaJIT in 30 minutes (or so)
- FFI Library (lua 调用 c)