c语言 - Lua 的"global"本地值存储在哪里?



>我需要从 C 调用一个 Lua 函数,只要该函数是全局的,我就可以在全局表中找到它,但如果它被声明为本地,我该如何推送堆栈上的地址来调用它?

function MyGlobal()
print("Global")
end
local function MyLocalGlobal()
print("Local")
end

从 C 调用MyGlobal()不是问题,它工作正常。我在全局表中查找函数。

但是如何从 C 调用MyLocalGlobal()?它不在全局表中,但它在哪里以及如何推送地址?

我正在使用Lua 5.3.4。

MyLocalGlobal()函数并不是真正的全局函数。它是表示整个加载代码块的匿名函数的本地函数。

当你打电话给lua_load/lua_loadstring时,到底发生了什么:

return function(...) -- implicit functionality outside of code to be loaded
-- your file starts here --
function MyGlobal()
print("Global")
end
local function MyLocalGlobal()
print("Local")
end
-- file ends here --
end               -- implicit functionality outside of code to be loaded

您可以稍后使用调试工具(通过"调试"库(获取MyLocalGlobal,或者您应该在该源文件的末尾显式返回所需的接口,并在加载/执行块后立即在本机端获取/读取接口。

最新更新