当前位置 : 主页 > 网络编程 > lua >

指针 – 如何使用LuaJIT FFI创建指向现有数据的指针?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我知道有一些使用LuaJIT FFI创建指针的例子,但其中大部分并未指向现有数据.其中一个例子就是: How to pass a pointer to LuaJIT ffi to be used as out argument? 我无法成功做的一件事是创建一个指向
我知道有一些使用LuaJIT FFI创建指针的例子,但其中大部分并未指向现有数据.其中一个例子就是:
How to pass a pointer to LuaJIT ffi to be used as out argument?

我无法成功做的一件事是创建一个指向现有值的指针.据我所知,为了得到一个指针类型,我必须知道我想在将来的某个时刻指向它,如:

local vao = ffi.new("GLuint[1]")
gl.GenVertexArrays(1, vao)
gl.BindVertexArray(vao[0])

在这里,我知道glGenVertexArrays需要一个指向vao的指针,所以我将它指定为GLuint [1].在C中,我会做类似以下的事情:

GLuint vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

在这里,我不知道我需要一个指向vao的指针,所以我可以正常指定它.

换句话说,有没有办法获取现有值的地址或创建指针?在创建它之前,我是否必须预见到我将使用该值做什么?

谢谢!

没有办法在FFI中获得指向cdata对象的指针.

我记得在LuaJIT邮件列表中读到这是为了一些优化工作而故意做的,虽然我在档案中找不到确切的消息.

到目前为止,我还没有需要获取cdata对象的指针; LuaJIT通过引用引用cdata(类似于表),类型[1]技巧适用于out参数.

网友评论