【问题标题】:Getting lua error when I'm calling a bound c++ class function twice?两次调用绑定的 c++ 类函数时出现 lua 错误?
【发布时间】:2012-02-04 17:06:44
【问题描述】:

我发现这篇关于如何将 c++ 类绑定到 lua 的博文:http://loadcode.blogspot.com/2007/02/wrapping-c-classes-in-lua.html

但它并不是开箱即用的。 我已经将函数调整为我自己的,而不是使用 NPC 类而不是 Sprite 类。 我将函数setSpeed 更改为我自己的函数NpcSetPosition(lua_State *L),每次我在lua 中调用以下函数时都会调用它:

local npc = Npc:New()
npc:SetPosition(5,5)

(npc:SetPosition 函数)

现在有趣的是我如何在NpcSetPosition 中调用checkSprite,如果我这样做一次,lua 脚本将运行良好。但是如果我这样做两次(我两次调用npc:SetPosition(5,5)),我会收到以下错误消息:

Lua Compile Error: script.lua:10: bad argument #1-1 to: 'SetPosition' (table expected, got userdata)

这意味着我不能为 npc 设置两次位置,这是废话。 你知道出了什么问题吗? 它与lua堆栈有关吗? 谢谢。

【问题讨论】:

  • “我已经根据自己的情况调整了函数”你能告诉我们调整后的版本吗?
  • 这里是:pastebin.com/3xMpCPG9
  • 我是想让你把它放在你的问题中。

标签: c++ c lua


【解决方案1】:

听起来您管理堆栈的方式不正确。

你在做 lua_settop(0);或您的 SetPosition 函数中的类似内容? 如果您正确管理堆栈,则此错误将消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多