Luc*_*cas 2 c++ lua lua-userdata
我可能误解了它们的使用或误读了文档,但是如何访问作为light userdata传递给Lua的结构或类的成员?例如,如果一个向量使用以下结构
typedef struct Foo {
int x;
int y;
} Foo;
Run Code Online (Sandbox Code Playgroud)
被声明为'test'并定义为x = 413和y = 612,并且通过调用推送
lua_pushlightuserdata( L, (void *) &test ) ;
Run Code Online (Sandbox Code Playgroud)
操作或打印x和y的函数的Lua代码是什么样的?
BMi*_*tch 11
Lua中的轻用户数据只是一个指针.Lua不了解如何读取指针引用的对象的内容.此数据的目的是允许一个C API调用将引用传递给另一个API调用.
如果你想在Lua中处理数据,你需要将它推入堆栈,在你的情况下我会把它变成一个表.如果您需要在C和Lua之间同步这些数据,那么您需要在两侧编写函数来处理赋值并将值复制到其他环境.另一个选择是只在Lua中拥有数据并在C语言中通过Lua API检索它,或者在C中使用Lua API并在Lua中通过C API(您将创建)检索它.
有关更多信息,Lua中的编程和Lua-users Wiki均有简要说明.
| 归档时间: |
|
| 查看次数: |
4398 次 |
| 最近记录: |