c++ - 我如何从 C/C++ 访问局部变量或调用 lua 脚本中的局部函数?

标签 c++ c lua

如果我这样定义一个“本地”函数:

本地函数 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/

相关文章:

c++ - 使用 C++ 更改 Fortran 输入文件中的变量

c++ - C/C++ 获取按键而不轮询

c - 我正在尝试构建一个 2*2 数组,但我的程序需要 5 个输入。为什么?

c++ - 从 Xcode 调试器调用 lua_getstack

java - 程序如何让Lua(或python)解释器执行程序提供的语句?

C++ 指示类函数抛出自定义异常

c++ - 限制仿函数参数类型和常量

c - sqlite3_reset() 什么时候需要?

Lua 脚本和 redis - 如何测试 None 值

python - 在 C++ 应用程序中执行已解析的脚本/片段