如果我定义一个“本地”函数,如下所示:
本地函数 Dispatch(archive) coroutine.resume(yelder) end
...我想从 C++ 调用这个函数,我认为我不能使用 lua_getglobal() 调用:
m_pThreadState = lua_newthread(m_MasterLuaState);
//Load/define the above "Dispatch" routine local to this thread.
luaL_loadbuffer(m_pThreadState, m_ScriptBody, strlen(m_ScriptBody),"Console");
lua_getglobal(m_pThreadState, "Dispatch"); //UH-OH!! PROBLEM HERE!!
lua_pcall(m_pThreadState, 1, 0, 0);
Run Code Online (Sandbox Code Playgroud)
那么如何在调用准备中指定/推送本地函数“Dispatch”?同样,我假设我不能使用 lua_getglobal() 调用,因为“Dispatch”函数被定义为 m_pThreadState 的“本地”。我该怎么办?
您不能从 C 访问局部变量(除了调试 API,但我认为这不是您想要的)。
局部变量(和函数,因为它们是变量)是它们的本质——局部的,即只能从它们周围的范围内访问。
所以你有两个选择: