Хочу подключить вот эту библиотеку для работы с SQLite. Собрал dll файл, все как положено. LuaRocks зарегистрировал его в моем LUA для Windows (не в том что к Квику прилагается). Я взял оттуда lsqlite.dll и скопировал в папку с Квиком и пытаюсь запустить в Квике скрипт:
Код
local sqlite3 = require("lsqlite3")
На что получаю ошибку
Цитата
error loading module 'lsqlite3' from file 'C:\QuikKITFinance\lsqlite3.dll': Не найден указанный модуль.
Валентин пишет: название длл соответствует lsqlite3, как указано в require?
Стой проблемой справился. Оказывается в папку с Квиком надо было положить msvcr80.dll (компилятор MinGW использовал его при создании lsqlite3). На форумах писали что нужно еще файл манифеста для приложить, но я проверил - особой роли не играет с манифестом или без. Ошибка старая ушла, пришла новая:
Цитата
R6034 Anapplication has made an attempt to load the C runtime library incorrectly.
Цитата
error loading module 'lsqlite3' from file '.\lsqlite3.dll':
Цитата
Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).
Я поискал и видимо дело в том, что Квик использует другую версию msvcr, чем ту, которую я приложил. В главной папке Квика действительно лежат msvcrt.dll и msvcrt40.dll. Вот здесь очень похожая темка с такой же ошибкой обсуждается.
Валентин пишет: название длл соответствует lsqlite3, как указано в require?
Т.е. получается проблема в том, что мы компилируем внешние библиотеки под другой (полноценный) LUA, не тот, что стоит в Квике. Естественно полученные в результате библиотеки потом глючат в квике. И это концептуальная проблема.
А можно ли как-то настроить MinGW и LuaRocks на тот квиковский LUA? Я не знаю как.
Решение такое. Перед созданием библиотеки lsqlite3 через LuaRocks, нужно изменить конфигурационный файл LuaRocks. У меня этот файл лежит в корневой папке \LuaRocks и называется config-5.1.lua. У вас он может называться по-другому. Находим в нем раздел Variables и УБИРАЕМ НАХРЕН строку:
Код
MSVCRT = 'MSVCR80'
Собираем заново через LuaRocks библиотеку lsqlite3. Бросаем lsqlite3.dll в корневую Квика и радуемся т.к. все работает.