如何安全地从Lua堆栈读取字符串值?函数lua_tostring和lua_tolstring都会引发Lua错误(longjmp _ of /奇怪类型的异常)。因此,这些函数可能应该在保护模式下使用lua_pcall调用。但我无法找到一个很好的解决方案,如何做到这一点,并获得字符串值从Lua栈到C++。是否真的需要使用lua_pcall在保护模式下调用lua_tolstri
在我的情况下,有时可以递归地调用lua_pcall。递归调用不像预期的那样工作。我认为这是因为第二个调用仍然具有上一个lua_pcall的状态。堆栈仍然可以包含第一个lua_pcall的变量,更不用说lua在lua_State中可能使用的所有其他内部变量了。= lua_pcall( m_pLuaState, 0, 1, 0 );
//remove the ret
默认的lua_pcall错误处理程序(在Lua5.3中)什么也不做,允许异常消息保留在堆栈的顶部。我们想要改变这一点,因此除了在堆栈上的异常消息之外,我们还得到了一个luaL_traceback跟踪,该消息位于lua_pcall失败的堆栈之上。(L, -(number of args + 1));
/* error, pop the
我使用luabind作为我的lua to C++包装器。Luabind提供了一个方法来使用我自己的回调函数来处理由lua抛出的异常,set_pcall_callback()。(L);luabind::set_pcall_callback(&Engine::pcall_log); //<--- Problem line
//etc...rest of thecode not shown for br