Моя цель - просто вызвать функцию таблицы из C++, которая использует «self» внутри функции для доступа к полям и функциям этой таблицы. Я продолжаю получать прекрасную «попытку назвать значение nill (local self)» на линии с «self.name». Ниже мой сценарий Lua.Вызов функции таблицы Lua из C++ w/self in function
Foo = { name = 'Foo' }
function Foo:OnUpdate()
print('In OnUpdate in Lua')
print(self.name)
end
Ниже приведен код на C++ (без учета обработки ошибок на данный момент).
lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "foo.lua");
lua_getglobal(L, "Foo");
lua_getfield(L, -1, "OnUpdate");
lua_pcall(L, 0, 0, 0);
Когда 'lua_pcall' называется, я не вижу 'В OnUpdate в Lua' в CLI, но никогда 'Foo'. Если я проверю ошибку с 'lua_pcall', я получаю сообщение об ошибке, упомянутое выше. Я пропустил некоторую функцию API Lua C до вызова 'lua_pcall'? Я знаю об этом. vs. ':' в lua для использования «я». Если я добавлю вызов в сценарий Lua, например «Foo: Update()», все работает отлично. Это меня насторожило.
Красивая! Спасибо огромное! –