LuaJit ffi 访问C中的结构体

本文介绍了如何使用LuaJit的Foreign Function Interface (FFI) 来访问C语言中的结构体。首先,我们编译了LuaJit并添加到PATH环境变量中,然后通过编写Lua脚本`test.lua`展示了FFI的用法,从而在Lua中操作和打印C结构体的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值