Использование Lua из C ++, не в состоянии открыть стандартные библиотеки с ошибкой Nil - PullRequest
1 голос
/ 02 мая 2019

Я пишу интеграцию Lua в игровой проект, и, к сожалению, каждый раз, когда я пытаюсь использовать lua_pcall, я получаю сообщение об ошибке «пытаюсь вызвать значение nil».

Когда я пытаюсь найти ошибку, большинство примеров - это люди, которые забыли использовать pcall после загрузки своего файла lua или какой-то ошибки в дальнейшем. Но для меня это как только я пытаюсь загрузить стандартные библиотеки lua. Я не понимаю, что происходит с таким небольшим кодом, чтобы показать это. Другие вещи, которые я пробовал - пропустить openLibs и сразу перейти к загрузке моего файла с помощью doFile, но даже в этом случае все, что я сделаю, приведет к ошибке nil.

Любая помощь очень ценится.

EDIT:

Благодаря некоторой помощи я решил, что мне не нужно делать pcall для luaL_openlibs, но, как я писал выше, попытка запустить любую функцию при любых ошибках приводит к ошибкам. В этом случае он не может найти «init» в глобальном пространстве имен lua

C ++

void LuaScriptingInterface::init()
{
    m_luaState = std::shared_ptr<lua_State>(luaL_newstate());

    luaL_openlibs(m_luaState.get());

    if (luaL_dostring(m_luaState.get(), m_script.c_str())) // script below
    {
        const char* errStr = lua_tostring(m_luaState.get(), -1);
        ASSERT(false, errStr ); // not hitting this case
    }

    lua_getglobal(m_luaState.get(), "init");
    if (!lua_isfunction(m_luaState.get(), -1))
    {
        ASSERT(false); // hit this case! Why can't we find "init"?
    }
}

Lua

init function ()

end

update function (dt)

end

Конечно, он пока ничего не делает, но я ожидаю, что он, по крайней мере, сможет найти функцию.

1 Ответ

0 голосов
/ 02 мая 2019

Весело проблема была в моем коде FileReader, был пропущен символ новой строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...