在对象上调用luabind函数时崩溃

时间:2013-12-08 07:00:31

标签: c++ lua luabind

当我尝试从C ++(通过luabind)运行“运行”功能(在lua中定义)时,我收到以下错误:

  

Game_Launcher.exe中0x767BC41F处的未处理异常:Microsoft   C ++异常:luabind ::内存位置错误0x001BF8B8。

使用一些try / catch技巧我得到的消息略少:

  

表达式:lua运行时错误

     

表达式:运行

的Lua:

local function Run(self)
    self.ticks = self.ticks + 1
end

return {
    ticks = 0,
    Run = Run,
}

C ++:

void ScriptComponent::Initialize()
{
    // I pipe everything through a filesystem, so the script must be loaded as a string first
    String fileData;
    fileSystem->LoadFromFile("myscript.lua", filedata);

    int err = lual_loadstring(L, fileData);
    luabind::object compiledScript(luabind::from_stack(L, -1));
    lua_pop(luaState, 1);
    luabind::object luaDataTable = compiledScript();
    lua_pop(luaState, 1);

    // Execute the run function
    luaDataTable["Run"](luaDataTable);
}

我能说的最好,luaDataTable是一张表并且有效。不确定我做错了什么!

1 个答案:

答案 0 :(得分:0)

如果我删除它工作的第一个pop状态,我会出现,oops!