а я то из обычной функции делаю lua_pcall, которая делает yield т.е., как я понял из доки, проблема возникает, когда последовательность вызовов такая: Lua -> C -> Lua.yield
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов. Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
Правда, coco делает корутины немного тяжелее чем были. Но это принципиально только если у нас модные функциональные техники "а давайте наплодим стотыщ короткоживущих лямбдокорутин на каждый чих".
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов. Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
Качаешь https://github.com/noahp/srlua-mingw/archive/master.zip Распаковываешь Кидаешь glue.exe и srlua.exe в папку со скриптом Открываешь консоль Переходишь в ней в папку со скриптом Выполняешь команду glue.exe srlua.exe имя_скрипта.lua имя_экзешника.exe
У корутин такое дело, что их совсем нельзя йелдить через сишные вызовы включая pcall, который тоже сишный вызов. Но если ты можешь, попробуй влепить https://coco.luajit.org. Или использовать luajit, там оно встроено.
я победил свою проблему с помощью lua_newthread + lua_resume