Добавление расширения SQL в предварительно скомпилированный проект Lua 5.2

Я просмотрел по крайней мере 6 различных расширений SQL Lua, и все они, кажется, имеют свою последнюю версию, совместимую с версией Lua до 5.1. У меня не было никакого успеха в реализации любого из них в моем текущем проекте, использующем Lua 5.2, и в лучшем случае сценарий заканчивается либо автоматическим сбоем программы, либо attempt to call global 'module' (a nil value).
Я не являюсь первоначальным владельцем проекта, поэтому я стараюсь не быть вынужденным изменить его исходный код (хотя в последнее время я даже пошел по этому пути).

И часто неясно, связаны ли эти сбои с тем, как работает сам проект, с тем, как проект реализует Lua (как статическую библиотеку), с тем, как Lua пытается реализовать свои расширения, с тем, как расширения реализуют свои зависимости. , конфликт версий или какая-то сумасшедшая комбинация того и другого. Практически невозможно отладить тихий сбой таким образом, потому что источником зла может быть буквально что угодно.

Как указано в ответе в этом вопросе, я даже пытался поддерживать функцию module (которая большинство расширений lua sql используют, но они устарели в 5.2), но программа по-прежнему дает сбой или просто жалуется на кажущееся бесконечным количество отсутствующих зависимостей. И после нескольких часов отслеживания (казалось бы) всех зависимостей, на которые он жаловался, он по-прежнему дает сбой.

Изменение исходного кода проекта для использования исходного кода Lua 5.1, по-видимому, нарушает функциональность проекта, что приводит к различным ошибкам компилятора, связанным с отсутствующими функциями, связанными с 5.2. Связывание коннектора MySQL C/C++ с проектом приводит к довольно расплывчатым ошибкам времени выполнения, которые, похоже, противоречат тому, как проект реализует Lua 5.2.

Существуют ли расширения sqlite/MySQL, которые действительно работают с Lua 5.2 на 32-разрядной машине Windows? Предпочтительно, "готовые" предварительно скомпилированные двоичные файлы с привязками исходного кода Lua/ffi?
ИЛИ в качестве альтернативы, есть ли какие-либо четкие инструкции о том, как получить это настроено правильно, без необходимости искать отдельные инструкции в Интернете для каждой необходимой сборки?


person RectangleEquals    schedule 31.05.2013    source источник
comment
Попробуйте собрать Lua 5.2 с определенным LUA_COMPAT_MODULE.   -  person Egor Skriptunoff    schedule 01.06.2013
comment
Спасибо, но это уже обсуждалось в вопросе (3-й абзац).   -  person RectangleEquals    schedule 01.06.2013
comment
Опс, простите мою невнимательность. Кстати, я обычно стараюсь писать свои Lua-скрипты так, чтобы они были совместимы как с Lua 5.2, так и с LuaJIT (с включенными некоторыми функциями 5.2), чтобы избежать будущих проблем с вызовом внешнего модуля. Подумайте о том, чтобы переписать ваш основной код Lua (и код на стороне хоста), чтобы он работал в обеих версиях Lua: при необходимости эмулируйте некоторые функции 5.2.   -  person Egor Skriptunoff    schedule 01.06.2013
comment
Вы ищете расширение для SQLite ИЛИ MySQL или для SQLite И MySQL? Если вам просто нужен SQLite, то lsqlite3 отлично работает с Lua 5.2 — получите его через luarocks. lua.sqlite.org   -  person Doug Currie    schedule 01.06.2013
comment
Вы имеете в виду вот этот здесь? Я успешно сгенерировал проект VC11 с помощью CMake-gui и заменил использование старых вызовов lua_strlen на lua_rawlen, но очевидно, что этот код по-прежнему использует Lua 5.1... Например, в lsqlite3. c строка 650, они используют luaL_typerror, который был удален из версии 5.2 с радостным примечанием о том, что luaL_typeerror был удален. Напишите свою версию, если вам это нужно..   -  person RectangleEquals    schedule 01.06.2013
comment
... и я действительно не хотел бы, чтобы меня заставляли компилировать мою собственную специальную версию Lua 5.2, чтобы включать (что может быть) совершенно неверные реализации любых функций, которые устарели и были удалены. Если после этого приложение по-прежнему дает сбой, то это еще одна вещь, которую можно добавить в список потенциальных виновников.   -  person RectangleEquals    schedule 01.06.2013
comment
Нет, не на LuaDist; перейдите к источнику на lua.sqlite.org или используйте luarocks для установки lsqlite3 (для этого вам понадобится установленный luarocks и совместимый компилятор C)   -  person Doug Currie    schedule 03.06.2013