如何在Lua脚本中检索堆栈中的值?

我正在将 Lua 嵌入到我的 C 应用中。我在 C 端从堆栈中推入一个变量,并希望在 lua 脚本本身中检索它。

我可以使用什么来获取在脚本文件中推入堆栈的值?

C 代码:

// ...
result = lua_load(L, luaByteCodeReader, file, "script", "bt");
lua_pushinteger(L, session_id);
if( lua_pcall(L, 1, 0, 0) != 0 )
// ...

在脚本中,我想检索 session_id

local session_id = ...
print "Start"
for i = 1, 10 do
  print(i, session_id)
end
print "End"
点赞
用户1783752
用户1783752

问题在于你正在传递参数给正在加载的脚本,根据你的情况,你可以设置一个全局值或调用一个函数。

例如,假设你有一个on_init函数在你的脚本中:

function on_init(session_id)
   ...do something...
end

你可以像之前一样加载脚本,然后获取栈顶上的on_init函数并使用你的参数进行调用:

lua_getglobal(L, "on_init");
lua_pushnumber(L, session_id);
/* 调用函数,传递1个参数,返回0个结果 */
lua_call(L, 1, 0);

这会使代码变得更加简洁。

2013-10-25 01:29:17