当我调用绑定的 c++ 类函数两次时出现 lua 错误?

Getting lua error when I'm calling a bound c++ class function twice?

本文关键字:两次 错误 lua 绑定 调用 c++ 类函数      更新时间:2023-10-16

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

但它并不是开箱即用的。我已经调整了我自己的功能,我使用的不是Sprite类,而是NPC类。我把函数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堆栈有关吗?谢谢

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

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