LUA 5.4 Замена для Lual_openlib дает ошибку значения NILC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 LUA 5.4 Замена для Lual_openlib дает ошибку значения NIL

Сообщение Anonymous »

В настоящее время я работаю над тем, чтобы попытаться обновить версию Lua, используемой в Dungeon Crawl: Stone Soup, и я сталкиваюсь с проблемой, так как функция Lual_openlib используется в значительной степени и с тех пор была депрессирована. В настоящее время я заменил его на следующий код (используя разные параметры в зависимости от места): < /p>
//luaL_openlib(ls, nullptr, lr, 0); //OLD CALL

//New call
lua_getglobal(ls, "NULL");
if (lua_isnil(ls, -1)) {
lua_pop(ls, 1);
lua_newtable(ls);
}
luaL_setfuncs(ls, lr, 0);
lua_setglobal(ls, "NULL");
< /code>
Код все компилируется, но когда я пытаюсь запустить игру, я получаю следующую ошибку: < /p>
./crawl
/mnt/d/Google Drive/Jon/UK/Spring 2021/CS 498/Crawl/crawl/crawl-ref/source/dat/des/00init.des:18: ...CS 498/Crawl/crawl/crawl-ref/source/dat/dlua/dungeon.lua:255: global 'setfenv' is not callable (a nil value)
< /code>
Может ли кто -нибудь дать какие -либо советы о том, почему это может происходить, или кто -нибудь может дать предложение о лучшем способе заменить все вызовы на Lual_openlib? Код, над которым я работаю, можно найти здесь, и в Commits он показывает все недавние изменения, которые я сделал, чтобы обновить ссылки на Lual_openlib.-- Given a list of map chunk functions, runs each one in order in that
-- map's environment (wrapped with setfenv) and returns the return
-- value of the last chunk. If the caller is interested in the return
-- values of all the chunks, this function may be called multiple
-- times, once for each chunk.
function dgn_run_map(...)
local map_chunk_functions = { ... }
if #map_chunk_functions > 0 then
local ret
if not g_dgn_curr_map then
error("No current map?")
end
local env = dgn_map_meta_wrap(g_dgn_curr_map, dgn)
for _, map_chunk_function in ipairs(map_chunk_functions) do
if map_chunk_function then
ret = setfenv(map_chunk_function, env)()
end
end
return ret
end
end


Подробнее здесь: https://stackoverflow.com/questions/671 ... alue-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»