私はLuaのエキスパートではありませんが、どのように動作するのかを理解するためにいくつかの記事があります。しかし、私はC++のテーブルに属するlua関数を呼び出すことに問題があります。Lua - C++インテグレーション:C++のテーブルの関数を呼び出す
以下の例では、コードからfoo:barを呼び出そうとしています。呼び出しは成功しました。しかし、パラメータ "a"はnilです(戻り値は正しいです - 戻り値を例10に変更すると正しい結果が表示されます)
スクリプトへの関数の引数の入力中に何かを逃しましたか?
lua_State* state = LuaIntegration->GetLuaState();
lua_getglobal(state, "foo");
if(lua_istable(state, lua_gettop(state))) {
lua_getfield(state, -1, "bar");
if(lua_isfunction(state, lua_gettop(state))) {
lua_pushinteger(state, 0);
if (lua_pcall(state, 1, 1, 0) != 0) {
ErrorMessage = lua_tostring(state, -1);
}
ReturnValue = lua_tointeger(state, -1);
}
}
これは、LUAで関数を呼び出します。
foo = base_foo:new()
function foo:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function foo:bar(a)
if a==10 then
return a
end
return 0
end
ああ意味があります。ありがとうございました –