我们能通过C++;对象转换为Lua脚本 我想把C++对象传递给Lua,在Lua使用相同的对象。我已经看到了在Lua中创建C++对象的例子,并使用它们。但我想在下面这样做 在C++代码< /LI>中创建C++对象 将其传递给Lua脚本并获取一些返回值

我们能通过C++;对象转换为Lua脚本 我想把C++对象传递给Lua,在Lua使用相同的对象。我已经看到了在Lua中创建C++对象的例子,并使用它们。但我想在下面这样做 在C++代码< /LI>中创建C++对象 将其传递给Lua脚本并获取一些返回值,lua,Lua,我已经在这里介绍了这些例子 http://loadcode.blogspot.sg/2007/02/wrapping-c-classes-in-lua.html https://gist.github.com/kizzx2/1594905 但是他们在Lua中创建C++对象并在Lua脚本中使用它们。 你可以给出一些指针。 < P>因为你不想使用Lua中的对象(只把它们传递给C++),你可以用C++来把它们包成一个ListUrSerDATA(参见),然后弹出它(你可能想检查一下它)。唯一的区别是,

我已经在这里介绍了这些例子

http://loadcode.blogspot.sg/2007/02/wrapping-c-classes-in-lua.html
https://gist.github.com/kizzx2/1594905
<>但是他们在Lua中创建C++对象并在Lua脚本中使用它们。
你可以给出一些指针。

< P>因为你不想使用Lua中的对象(只把它们传递给C++),你可以用C++来把它们包成一个ListUrSerDATA(参见),然后弹出它(你可能想检查一下它)。唯一的区别是,在常规ud手册中,它们在Lua函数中创建对象,而您已经有了一个对象。只需推送指针大小的新userdata,并将其元表设置为Lua类的元表(您已经准备好了)


其中tname是您的Lua端类元表名称

你把它们当作指针。你读了吗?这本书有几章是关于这个主题的,通过你已经得到的例子,它应该是可以的。没有办法“在Lua中创建它们”。你缺少一些类型转换。
void **ud;
ud = lua_newuserdata(L, sizeof(*ud));
*ud = object; // existing

luaL_getmetatable(L, tname);
lua_setmetatable(L, -2);

// ud at top of stack

lua_setglobal(L, "foo");