如果我这样定义一个“本地”函数:
本地函数 Dispatch(archive) coroutine.resume(yielder) 结束
...我想从 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);
那么我如何指定/推送本地函数“Dispatch”来准备 电话?同样,我假设我不能使用 lua_getglobal() 调用,因为 "dispatch"函数被定义为 m_pThreadState 的“本地”。什么 我该怎么做?
最佳答案
您不能从 C 访问局部变量(调试 API 除外,但我认为这不是您想要的)。
局部变量(和函数,因为它们是变量)就是它们的本来面目 - 局部,即只能从其周围范围内访问。
所以你有两个选择:
- 创建一个全局变量
- 从 Lua 中调用一个 C 函数并将局部函数作为 范围。然后你将在堆栈上拥有该功能并且将是 能够从 C 中调用它(从 C 函数中)。现在这样做没有什么意义,我只是指出了可以完成的方式。
关于c++ - 我如何从 C/C++ 访问局部变量或调用 lua 脚本中的局部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22776420/