将C结构指针传递给lua脚本

6 c lua luajit

我想知道有没有办法将结构指针传递给lua脚本,并从lua到达它的成员而不复制(用于读写目的).

那么,例如是否可以直接通过其指针覆盖ac结构的成员?

(我正在使用luajit)

BMi*_*tch 6

除了蒂姆的答案,你还可以选择轻量级的用户数据.你不会在Lua堆栈中得到数据的副本,所有你推送到Lua的都是一个指针.

Lua不知道这个指针是什么,它是否仍然指向有效的内存,或者如何访问这个指针中的任何对象,所以你必须自己在C中处理所有这些.我通常发送一个指针列表中的项目,所以如果从列表中删除条目有任何风险,我首先遍历列表以验证指针(如果您的列表很短,则不是很重要).要访问Lua中指针内的项目,您需要在C中编写可以从Lua调用的get/set函数.

首先,以下是推送和检索lightuserdata的条目:


Nec*_*lis 5

看到你已经标记为这个luajit,你可以用FFI直接结构成员访问相结合的光用户数据(如其他人所说),看到这里的教程:http://luajit.org/ext_ffi_tutorial.html