我有一个奇怪的问题,从 C++ 调用 Lua 函数。我在 Lua 中有:
Player =
{
Number = 0.43,
Text = "SomeText",
}
function Player:Func(a, b)
return (a * b);
end
在 lua_pcall 我的堆栈看起来:
table
function
3
4
我调用这个函数:
lua_pcall(L, 2, 1, 0)
我从 Lua 得到错误:
尝试对局部 'b' 执行算术运算(一个 nil 值)
当我更改 Lua 脚本时
return (a * b);
到
return a;
没有错误,但是来自 lua_tonumber(L, -1); 我得到值 4(我在 C:/ 中的第二个参数),所以看起来我在 C 中的第二个参数在 Lua 中是第一个。你知道我在代码中做错了什么吗?
我如何构建堆栈:
lua_getglobal (L, "Player");
lua_pushstring(L, "Func");
lua_gettable(L, -2);
lua_pushnumber(L, 3.0);
lua_pushnumber(L, 4.0);