私はこれを解決するために過去6時間を費やしました!そして私はどこにでも行くことができません:s
c ++ファイルでluaテーブルを作成し、それを次のlua関数を持つluaスクリプトファイルに渡すことができるようにしたいと思います。
function MTable (t)
local n=#t
for i=1,n do
print(t[i])
end
end
2つの文字列を含む1次元配列を動的に作成しました。
lua_newtable(L);
lua_pushstring(L,"10.10.1.1");
lua_pushstring(L,"10.10.1.2");
lua_rawseti(L,-3,2);
lua_rawseti(L,-2,1);
これで、スタックの一番上にテーブルができました。私はこれを書くことによってそれを検証しました:if(lua_istable(L、lua_gettop(L))) `1を返しました、これはそれがテーブルであることを意味します。
それから私はこれをしました:
lua_getglobal(L, "MTable"); // push the lua function onto the stack
uint32_t result = lua_pcall(L, 1, 0, 0); //argument 1 is for the table
if (result) {
printf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
exit(1);
}
そのため、次のエラーが発生しました: スクリプトの実行に失敗しました:テーブル値を呼び出そうとしました
このファイルには、C++から正常に呼び出している他のいくつかの関数があることに注意してください。
誰かが私がこのエラーを解決するのを手伝ってくれますか?これはLUAのバグでしょうか?cz私は手順を非常に正しく実行しました...私は推測します!