QLUA не видит библиотеку., QLUA не видит библиотеку dll
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 00:13:51
Хочу подключить вот для работы с SQLite. Собрал dll файл, все как положено. LuaRocks зарегистрировал его в моем LUA для Windows (не в том что к Квику прилагается). Я взял оттуда lsqlite.dll и скопировал в папку с Квиком и пытаюсь запустить в Квике скрипт:
Код
local sqlite3 = require("lsqlite3")
На что получаю ошибку
Цитата
error loading module 'lsqlite3' from file 'C:\QuikKITFinance\lsqlite3.dll': Не найден указанный модуль.
Что я делаю не так?
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 00:16:53
Небольшая ошибочка в тексте выше - файл конечно же называется lsqlite3.dll.
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 00:18:29
Квик версии 7.
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 00:51:58
Проверил эту библиотеку в LUA для Windows - работает. Так что файл lsqlite3.dll в порядке.
Но почему Квик его не видит?
Пользователь
Сообщений: Регистрация: 30.03.2015
03.01.2016 04:47:50
название длл соответствует lsqlite3, как указано в require?
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 07:59:15
Цитата
Валентин пишет: название длл соответствует 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. очень похожая темка с такой же ошибкой обсуждается.
И что делать то?
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 08:10:43
Цитата
Валентин пишет: название длл соответствует lsqlite3, как указано в require?
Т.е. получается проблема в том, что мы компилируем внешние библиотеки под другой (полноценный) LUA, не тот, что стоит в Квике. Естественно полученные в результате библиотеки потом глючат в квике. И это концептуальная проблема.
А можно ли как-то настроить MinGW и LuaRocks на тот квиковский LUA? Я не знаю как.
Пользователь
Сообщений: Регистрация: 07.07.2015
03.01.2016 12:30:39
Всё! Заработало!
Решение такое. Перед созданием библиотеки lsqlite3 через LuaRocks, нужно изменить конфигурационный файл LuaRocks. У меня этот файл лежит в корневой папке \LuaRocks и называется config-5.1.lua. У вас он может называться по-другому. Находим в нем раздел Variables и УБИРАЕМ НАХРЕН строку:
Код
MSVCRT = 'MSVCR80'
Собираем заново через LuaRocks библиотеку lsqlite3. Бросаем lsqlite3.dll в корневую Квика и радуемся т.к. все работает.