У меня проблемы с получением функции Lua 5.2 для вызова из C++.Lua 5.2 issue: «попытка вызвать значение nil» из lua_pcall
Это кусок Lua (названный test.lua):
function testFunction()
print "Hello World"
end
И это C++:
int iErr = 0;
//Create a lua state
lua_State *lua = luaL_newstate();
// Load io library
luaopen_io (lua);
//load the chunk we want to execute (test.lua)
iErr = luaL_loadfile(lua, "test.lua");
if (iErr == 0) {
printf("successfully loaded test.lua\n");
// Push the function name onto the stack
lua_getglobal(lua, "testFunction");
printf("called lua_getglobal. lua stack height is now %d\n", lua_gettop(lua));
//Call our function
iErr = lua_pcall(lua, 0, 0, 0);
if (iErr != 0) {
printf("Error code %i attempting to call function: '%s'\n", iErr, lua_tostring(lua, -1));
}
} else {
printf("Error loading test.lua. Error code: %s\n", lua_tostring(lua, -1));
}
lua_close (lua);
Когда я прослеживать, я вижу, что он загружает скрипт test.lua fine (ошибка не возвращается), тогда он показывает, что высота стека равна 3 после вызова lua_getglobal с именем функции.
Однако он не работает в lua_pcall с кодом ошибки 2: «попытка вызвать значение nil».
Я читал много примеров кода Lua 5.2 и, похоже, не вижу, где я ошибаюсь. Похоже, что это определенно должно работать (согласно тому, что я прочитал).
Я проверил правописание и чувствительность к регистру, и все это соответствует.
Я что-то неправильно понял ???
Функция печати не загружена. 'luaL_openlibs' должен загрузить его. – Simple