如何获取消息、lua_pcall调用者和错误处理程序

我调用了lua_pcall函数,它是一个c++类对象,并且错误处理程序是Lua_CFunction,因此没有类信息,如何从错误处理程序中获取一些信息?

// 错误处理程序
static int traceback( lua_State *L)
{
    auto msg = CLua::GetCallStack(L);
    cout << msg << endl;
    return 0;
}

// 类函数
bool CLua::RunFunction(const string & strFunctionName , ...)
{
    // 推入错误处理程序
    lua_pushcfunction(m_pScriptContext,traceback);
    auto nErr = lua_gettop(m_pScriptContext);

    PushFunction(strFunctionName);
    ...
    // 推入参数
    ...
    auto res = lua_pcall(m_pScriptContext, 4, LUA_MULTRET, nErr);
    lua_remove( m_pScriptContext, nErr );
    if( res != LUA_OK )
    {
        **// 在这里我想从错误处理程序中获取消息**
        return false;
    }
}

当错误发生时,lua将调用错误处理函数“traceback”。 然后,此函数将执行某些操作,然后返回。 在lua_pcall函数的调用者“RunFunction”中,只有一个错误代码,如何获取traceback函数信息?

该类将有许多对象,因此不能使用全局变量来传递它。 还有其他方法吗?

点赞