Я использую игровой движок, который позволяет вам программировать на Lua. Команды игрового движка находятся в DLL, созданной на C. В C есть исполняемый файл, который вызывает файл Lua. В этот файл Lua вы помещаете весь код игры, включая основной цикл. С exe-файлом не нужно идти вперед и назад, но вы можете вызывать функции из DLL.
Итак, здесь, перед основным циклом, я создаю функцию, из которой собираюсь создать сопрограмму. Эта функция выполняет итерацию по довольно большой таблице, поэтому я получаю каждые n итераций. Эта функция имеет бесконечный цикл while вокруг этого, потому что мне нужно, чтобы этот материал запускал каждый цикл основного игрового цикла, но это нормально, если он разбит на несколько циклов.
Затем я создаю сопрограмму с этой функцией в качестве параметра. Затем в основном игровом цикле я возобновляю эту сопрограмму.
Когда я запускаю свой код, я получаю сообщение об ошибке: соблазн перейти через границу метаметода / C-вызова
Я читал кое-что в Интернете, но не совсем понимал, в чем проблема. Как только exe вызывает файл Lua, он вообще не возвращается к exe, пока файл Lua не будет завершен, и, поскольку у меня есть мой основной цикл в файле Lua, он никогда не завершается в моем тестовом примере.
Какие у меня варианты с этим?