【问题标题】:LuaPlus: How to push a table to the stack?LuaPlus:如何将表推入堆栈?
【发布时间】:2013-11-06 20:53:09
【问题描述】:

我希望一个函数在被 Lua 脚本调用时返回一个(键-值-)表。因此,我必须将表推入堆栈。
我知道如何将整数压入堆栈:state->PushInteger(10)
我也知道它对字符串和其他数字是如何工作的,但是我如何将一个表推入堆栈,此外我如何从 C++ 端创建它?

这个网站通常很好地解释了一切:http://wwhiz.com/LuaPlus/LuaPlus.html 但我很难理解 LuaPlus 是如何工作的。所以在这种情况下,它并没有真正帮助我。 :(

如果有人可以在这里帮助我,那就太好了,我现在确实在尝试这样做 3 天.. :/

【问题讨论】:

标签: c++ lua push lua-table luaplus


【解决方案1】:

该页面的Pushing a LuaObject onto the Lua Stack 部分似乎是我认为的答案。

The cases where you would need to push a LuaObject onto the Lua stack are rare.  Nonetheless, the facility is provided through LuaObject's PushStack() function.

LuaObject tableObj(state);
tableObj.AssignNewTable();
tableObj.SetString("Key", "My String");

// It's often good practice to use a LuaAutoBlock here.
tableObj.PushStack();    // Be sure to clean it up when you're done!

【讨论】:

  • 我读过,但没听懂。 :/ 我试过这个:pastebin.com/VyBrYzkM 但成员 PushStack() 不存在。我猜我的 LuaPlus 版本太旧了(2012 年 6 月)。我太害怕更新它,因为我已经花了一周时间来设置旧版本。我真的希望有另一种方法。 :(
  • @Forivin 尝试改用Push()。这是我查看luaplus的header后发现的方法名。
  • 我试过了,但是当我(从 Lua 端)调用该函数时,我的程序立即崩溃。 pastebin.com/t44EjPuz 程序以“代码 3 (0x3)”退出。是否还有其他我做错的事情?
  • 我假设您仍然需要(从您的 C++ 函数)返回 lua 堆栈上应该返回给 lua 的元素数量。所以这个函数应该return 1而不是返回0。
  • 我试图返回 1,我试图返回 "state->GetTop() - top;".. 它仍然与 0x3 一起崩溃。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2011-04-22
  • 2021-12-01
  • 1970-01-01
  • 2017-03-22
  • 2018-03-27
相关资源
最近更新 更多