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

时间:2013-10-24 22:14:56

标签: c lua

我在我的C应用程序中嵌入了lua。 我正在从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"

1 个答案:

答案 0 :(得分:1)

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

例如,假设您的脚本上有on_init函数:

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

您可以在执行时加载脚本,然后在堆栈顶部获取on_init函数并使用您的参数调用它:

lua_getglobal(L, "on_init");
lua_pushnumber(L, session_id);
/* call the function with 1 arguments, return 0 result */
lua_call(L, 1, 0);

而且它有点清洁。