2

我将 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"
4

1 回答 1

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);

而且它更干净一点。

于 2013-10-25T01:29:17.567 回答