Я просмотрел по крайней мере 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?
ИЛИ в качестве альтернативы, есть ли какие-либо четкие инструкции о том, как получить это настроено правильно, без необходимости искать отдельные инструкции в Интернете для каждой необходимой сборки?
lua_strlen
наlua_rawlen
, но очевидно, что этот код по-прежнему использует Lua 5.1... Например, в lsqlite3. c строка 650, они используютluaL_typerror
, который был удален из версии 5.2 с радостным примечанием о том, что luaL_typeerror был удален. Напишите свою версию, если вам это нужно.. - person RectangleEquals   schedule 01.06.2013