C++ から Lua 関数を呼び出すと、奇妙な問題が発生します。私はLuaに持っています:
Player =
{
Number = 0.43,
Text = "SomeText",
}
function Player:Func(a, b)
return (a * b);
end
lua_pcall の前に、私のスタックは次のように見えます:
テーブル
関数
3
4
この関数を次のように呼び出します:
lua_pcall(L, 2, 1, 0)
そして、Luaからエラーが発生します:
ローカル 'b' (nil 値) で算術を実行しようとします
Luaスクリプトで変更すると
return (a * b);
に
return a;
エラーはありませんが、lua_tonumber(L, -1); からです。値 4 (C:/ の 2 番目の引数) を取得したので、C の 2 番目の引数が Lua の最初にあるように見えます。私のコードで何が間違っていたか知っていますか?
スタックの構築方法:
lua_getglobal (L, "Player");
lua_pushstring(L, "Func");
lua_gettable(L, -2);
lua_pushnumber(L, 3.0);
lua_pushnumber(L, 4.0);