我在我的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"
答案 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);
而且它有点清洁。