ExpE (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Не работает скомпилированный cURL для QUIK (Lua-cURLv3), но работает в простом lua-интерпретаторе
 
Добрый вечер!

Потребовался cURL в скриптах lua для Quik. Использую для этого Lua-cURLv3. Но уже несколько недель не могу добиться того, чтобы cURL заработал в Quik.

Сначала скомпилировал cURL с OpenSSL и zlib, получив все необходимые dll-библиотеки (libcurl.dll, libcrypto-3-x64.dll, libssl-3-x64.dll, zlibwapi.dll). Затем с помощью LuaRocks скомпилировал модуль Lua-cURLv3 (получил lcurl.dll и необходимые к нему lua-файлы для скрипта). Все скомпилировалось без ошибок. Проверил с помощью специальной программы Dependencies (с Github), что все зависимости в lcurl.dll подключены. Добавил пути к этим либам в Path - Quik их видит, нормально без ошибок подключает Lua-cURLv3 скриптом:
Скрытый текст

Но, если попробовать получить какие-то данные следующим скриптом, то QUIK Junior 9.1.3 выбрасывает неизвестное исключение "unrecognized exception", а QUIK Junior 11 и Open_Broker_QUIK 10.2.3.7 падают при запуске скрипта:
Скрытый текст

Примечательно, что если закомментировать функцию cl:setopt_writefunction, то message(tostring(cl:getinfo(curl.INFO_RESPONSE_CODE))) вернет код ответа 200, т.е. запрос был выполнен успешно. Однако способа, как получить тело ответа без cl:setopt_writefunction я не нашел. Может вы знаете?

При этом Lua-cURLv3 нормально работает в обычном интерпретаторе lua. Если запустить следующий скрипт через cmd (C:\lua-scripts>lua test.lua), нужный результат будет выведен в консоль:
Скрытый текст

В всех Quik'ах использую версию lua 5.4.1. На компьютере установлен lua 5.4.2 (он же используется в LuaRocks). Для теста использую версии Quik: QUIK-Junior 9.1.3, QUIK-Junior 11, Open_Broker_QUIK 10.2.3.7. Дамп падения QUIK-Junior 9.1.3 (он тоже, как и другие падет, если в скрипте убрать функцию main()) можно скачать здесь: первый и второй (почему-то создаются сразу два).

Скачать скомпилированные под x64 либы можно здесь. Папки clib и cURL и файл cURL.lua необходимо разархивировать в корень папки QUIK. Добавить папку квика и папку clib в Path и перезапустить Quik.

Прошу помощи! У меня не осталось предположений, в чем может быть проблема. Может я делаю что-то не так? Или дело в Quik? У кого есть опыт и знания поделитесь, пожалуйста.

P.S. У меня осталось только 1 предположение, что нужно было как-то использовать библиотеку lua54.dll из папки с QUIK. Но во время создания либы Lua-cURLv3 я ни разу не столкнулся с тем, чтобы она была где-то нужна.
Страницы: 1
Наверх