Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Программирование на Lua _ FAQ | Часто задаваемые вопросы

Автор: alex82 26.7.2010, 10:06

Вопрос: Не могу запустить lua.exe - выкидывает ошибку "Приложению не удалось запуститься, поскольку оно некорректно настроено. Повторная установка приложения поможет решить проблему". Подскажите, что надо настроить, чтобы эта ошибка не возникала?

Ответ: Данная ошибка присуща официальным бинарникам Lua и пакету LuaForWindows. Для ее устранения нужно установить набор runtime-библиотек Visual C++ 2005: http://mydc.ru/r/?http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=en . Также можно в очередной раз пнуть фирму Майкрософт за столь "информативное" сообщение об ошибке bad_smile.gif .



Вопрос: Я написал скрипт на Lua, но, судя повсему, допустил в нем ошибку - консоль Lua сразу закрывается, игнорируя ключ -i, и я не могу посмотреть сообщение об ошибке. Подскажите, можно ли сделать так, чтобы консоль переходила в интерактивный режим даже в том случае, когда в скрипте есть синтаксическая ошибка?

Ответ: Можно. Для этого Вы можете добавить в контекстное меню Lua-скриптов команду, запускающую скрипт в "безопасном" режиме:

Код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\lua\shell\runsafe]
@="Запуск (безопасный режим)"

[HKEY_CLASSES_ROOT\lua\shell\runsafe\command]
@="\"D:\\Program Files\\lua\\lua.exe\" -i -e \"r,e = pcall(dofile,[=[%1]=]); if r then print([=[File %1 has no errors]=]) else print(e) end\""

либо команду, позволяющую проверить скрипт на наличие синтаксических ощибок, но не запускающую его выполнение (Следует помнить, что данная команда проверяет скрипт только на наличие грубых синтаксических ошибок, не позволяющих интерпретатору Lua скомпилировать его в байт-код. Для поиска ошибок в алгоритмах скрипта, Вам необходимо отлаживать его непосредственно на той платформе, для которой он написан):
Код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\lua\shell\check]
@="Проверить"

[HKEY_CLASSES_ROOT\lua\shell\check\command]
@="\"D:\\Program Files\\lua\\lua.exe\" -i -e \"r,e = loadfile([=[%1]=]); if r then print([=[File %1 has no errors]=]) else print(e) end\""

Чтобы добавить команду в контекстное меню, скопируйте код в файл с расширением .reg, и запустите его.
Во всех приведенных выше фрагментах кода предполагается, что бинарники Lua находятся в папке D:\Program Files\lua\. Если Lua установлен в другую папку, то Вам необходимо исправить пути вручную. Имя раздела реестра, который используется для создания контекстных меню файлов с расширением .lua, также может отличаться. Чтобы узнать его, запустите редактор реестра, откройте ветвь HKEY_CLASSES_ROOT, найдите раздел .lua, и посмотрите значение параметра "По умолчанию". Если Вы по каким-либо причинам не хотите лезть в реестр, то можете воспользоваться готовым файлом, который внесет все необходимые изменения, и добавит в контекстное меню файлов .lua и .luac команды для редактирования в Notepad++, запуска в обычном и безопасном режимах, и проверки на наличие ошибок:
 lua.reg.rar ( 451 байт ) : 18

Не забудьте исправить пути перед запуском файла!