| Author |
Message |
|
|
z00n - cпасибо за код! Оказывается в хидерах которые я использовал, декларации Lua - функций были другими, видимо здесь источник всех проблем.
Теперь все заработало правильно!
|
 |
|
|
Глюк почти наверняка (99.9%) или в твоём коде, или в коде связки PowerBasic - Lua. Не могу сказать точнее, не видя кода.
В принципе, весь код показан в моем предыдущем посте. Возможно ошибка в связи PowerBasic - Lua, попробую сличить хидеры от C и PB. Кстати, момент с выдачей ошибки - единственная проблема, все остальное работает без нареканий.
|
 |
|
|
smz wrote:
Только иногда, случайно и непредсказуемо. Хотим играть в лотерею или программировать надёжно?
Поставил luaL_openlibs, все нормально работает как и прежде
Это точно глюк, но только не в Lua.
А в чем тогда глюк?
|
 |
|
|
Кстати, заметил еще одну странность, в коде:
Выдается ошибка - attempt to call a nil value
а если так:
Правильное описание ошибки - [string "start"]:3: attempt to call global 'xxxxxx' (a nil value)
Что-то на глюк уж больно смахивает.....
|
 |
|
|
Так делали в Lua 5.0, для Lua 5.1 это неправильно. Вот цитата из справочника (выделение - моё):
Но тем не менее, в Lua 5.1 такой способ подключения работает без ошибок
Читай справочник. luaL_loadbuffer только помещает на стек, а вот lua_pcall как раз запускает на исполнение. Без этого, ф-ция start и всё остальное в скрипте ещё не видны из Lua. Кроме того, вместо %LUA_MULTRET здесь лучше поставить 0, так как твой PowerBASIC-код не использует значения, возвращаемые исполненным скриптом
Поставил 0 вместо %LUA_MULTRET, ничего не изменилось
|
 |
|
|
moteus wrote:
Может быть вы приведете код где это действительно необходимо?
У меня просто была задумка, сделать Lua скриптовым языком в моем приложении. На подобие как VBA встроен в MS Office, или внутренний язык 1C. Чтобы был, некий редактор в котором пишется "конфигурация" на Lua. Естественно, в процессе отладки такого скрипта будет много ошибок, синтаксических и т.д. И нужно, чтобы гарантированно выводился номер строки с ошибкой, чтобы пользователь мог понять в каком месте он ошибся, "attempt to call a nil value" - не дает никакой информации об этом
|
 |
|
|
z00n wrote:
Приведите код, которым вы вызываете луа.
Код у меня на PowerBASIC, но думаю все и так понятно. Правда некоторые функции Lua названы в хидерах PB чуть иначе чем в C.
Вероятно это сделано для совместимости с версией 5.0
|
 |
|
|
smz wrote:PS. Два совета, если можно:
1) сообщение, не связанное с сабжем, должно начинать новую тему
2) если проблема, поднятая в теме, разрешилась, то принято сообщать (для общей пользы) в чём было дело, иначе у людей в дальнейшем не будет желания отвечать.
Проблема частично устранилась заменой Lua.dll на новую версии 5.1.3
Частично, потому что на вершине стека все-таки стали появлятся сообщения об ошибках, однако например в таких случаях:
выдается неинформативная строка
attempt to call a nil value
Нет номера строки с ошибкой!
|
 |
|
|
В Lua не выводится позиция ошибочного символа в строке с ошибкой?
Для примера такой код:
После его запуска, на вершине стека оказывается такое сообщение:
[string ""]:2: attempt to call method 'write1' (a nil value)
Т.е. указан только номер строки с ошибкой, а номер ошибочного символа нет. Его можно получить?
|
 |
|
|
|
А можно ли компилировать Lua скрипт в байт-код используя функции из Lua.dll? Или компиляция возможна только программой Luac.exe ?
|
 |
|
|
Кстати, а почему количество экспортируемых функций не изменилось? Или часть их, теперь просто "заглушки"?
|
 |
|
|
|
А кстати, если выкинуть парсер (допустим у меня работает только скомпилированный байт-код Lua) DLL можно уменьшить? Не сможешь собрать и выложить такую "обрезанную" Lua5.1.dll ?
|
 |
|
|
|
z00n - большое спасибо!
|
 |
|
|
z00n wrote:
jangle wrote:На сайте только исходники, мне их скомпилировать нечем. Где взять готовые бинарники?
А в гугле набирать "lua binaries" не пробовали?
http://luabinaries.luaforge.net/download.html
Если вас не устраивает размер то можно взять таки бесплатный компилятор MSVC Express и перекомпилировать с оптимизацией по размеру (результат 92.5 K), можно при компиляции выкинуть пару модулей, например парсер ~30% dll, math и.т.д
Если можно, выложите эту DLL которая 92.5 K сюда в форум.
|
 |
|
|
ок, спасибо за помощь, буду разбираться дальше
|
 |
|
|