2

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"
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 に答える