我怎样在C/C++中从lua脚本中访问局部变量或调用局部函数?

如果我定义一个“本地”函数,如下所示:

local function Dispatch(archive)
    coroutine.resume(yielder)
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);

那么我如何准备调用并指定/推送本地函数“Dispatch”?同样,我假设我无法使用lua_getglobal()调用,因为“Dispatch”函数被定义为“local”函数,所以我该怎么办?

点赞
用户2198692
用户2198692

你不能从 C 中访问 Lua 局部变量(除了调试 API,但我不认为你想用这个)。

局部变量(和函数,因为它们也是变量)只能在它们所在的作用域内访问,不能在外部访问。

因此,你只有两种选择:

  • 创建一个全局变量
  • 从 Lua 中调用一个 C 函数,并将局部函数作为参数传递。然后,你将在堆栈上拥有这个函数,并能够从 C 中调用它(在 C 函数中)。现在这样做没什么意义,我只是简单指出了它的可能性。
2014-04-01 07:58:03