Блог им. 3Qu

Quik 8.11.0.66. Вот так номер. Шо, опять Win32, опять 32 бит?

    • 18 февраля 2021, 20:35
    • |
    • 3Qu
  • Еще
Сегодня брокер Альфа обновил Квик с версии 8.8… до версии Quik 8.11.0.66. Появился кроме Lua 5.3.5 еще и Lua 5.4.1. Отлично, мне бы радоваться, давно этого хотел. Но...
Запустил рабочую в Quik 8.8 версию системы использующую DLL, И увидел вот это:
Quik 8.11.0.66. Вот так номер. Шо, опять Win32, опять 32 бит?
Во первых, ничего не работает даже в уже отлаженной версии Lua 5.3.5. Вы видите на картинке, что Lua не нравится 64-бит DLL, и она хочет 32-битную.
Во вторых, то ли Quik стал опять 32-х битным (пока не смотрел), то ли Lua в Quik стала снова 32-х битной, а это означает, что все надо переделывать с 64 бит на 32 бит. С чем боролись, на то и напоролись. Вечный кайф.
Признаться, сильно лень переделывать все опять на 32 бит, тем более, многих библиотек для DLL С++ для 32 бит просто не существует в природе.
О моей борьбе с этим буду сообщать. Наверно, дополнением этого топика. Подписывайтесь, чтобы ничего не пропустить. Мало ли, м.б. решение и найдется.



  • обсудить на форуме:
  • QUIK
18 комментариев

Квик не стал 32-битным. Если Вы запустили dll, скомпилированную под lua 5.3 в режиме 5.4, то и не будет работать.

Необходимо собрать ее для lua 5.4 или продолжать использовать в режиме lua 5.3. По крайней мере никаких проблем не наблюдается не на 8.11 ни на 8.12.

avatar
nicknh, я же написал запускаю для 5.3.5. И дело не в проге Луа, а в том, что Луа хочет 32 бит DLL. См. картинку, подчеркнуто красным.
Все индикаторы и пр. Луа (которые без DLL) как работали, так и работают.
avatar
Люди по уровням торгуют и наторговывают, танцевать с этими программами. Или вон трейдинг вью, там всегда все работает.
avatar

3Qu, Вы всегда можете проверить какая версия lua используется при запуске, выведя значение константы _VERSION. Не думаю, что ваш брокер решил что-то сделать с дистрибутивом. 32-бит версия будет иметь проблемы с 19 знаками в номерках заявок срочного рынка.

Данная ошибка просто говорит о несовместимости библиотек. А не то, что она 32 бит.

avatar
nicknh, 5.3.5. Если в программах Луа нет ДЛЛ, то все работает, что естественно, т.к. это не зависит от битности.
Проверил в предыдущей версии терминала — нет проблем.
avatar
Не похоже, что 32-бит версию хочет. Это просто обобщенное сообщение об ошибке. Такое вылезет, если вместо DLL подсунуть текстовый файл, например.
avatar
bstone, там нормальные версии и программы и ДЛЛ. Уже все это проверил в старой версии терминала 8.8… — все ОК.
На всяк случай удалял даже scripts.dat, переименовывал файлы Луа — не помогает.
Откровенно, думаю, что вряд ли они на 32 бит поменяли, но просит-то она 32 бит.
Мистика.(( ))
avatar

Чую копать нужно в сторону «путей», что то там не ладно.

 

avatar
Винни Пух, у меня все как было, так и осталось. А вот в интерпретаторе Луа они явно что-то поменяли, а, скорее всего, не учли, забыли учесть.
Вполне возможно, что с поиском Луа путей они и напутали. В Луа вполне определенная процедура поиска путей, м.б. с ней действительно что-то не в порядке. Как раз в этом направлении начал копать.
avatar
У  меня после перехода на новую версию только автологин «сломался» (починил быстро). С Lua-скриптами никаких проблем не возникло.
avatar
Prophetic, непосредственно с самими Луа скриптами никаких проблем и нет. Проблемы с ДЛЛ, подключенным к Луа скриптам. И даже, только в некоторых конфигурациях.
avatar
3Qu, Не дурак, читать умею. У меня роботы на С# работают. Lua-скрипты нужны для работы коннектора, и dll там подключена. в частности core.dll для 5.3, и «да» — 64-bit
avatar
Prophetic, в итоге все заработало. Проблемы действительно оказались с путями поиска reguire(). Видимо, ARQA по ходу пьесы их поменяла. При этом ошибки возникают для более сложных конструкций, скажем, когда ДЛЛ использует еще какие-то ресурсы, другие ДЛЛ, в частности. Просто ДЛЛ подключаются без проблем.
Ошибка -«не является приложением Win32», по видимому, осталась в наследие от предыдущих, еще 32-бит версий Квик.
avatar
3Qu, Да, подобное сообщение действительно сбивает с толку, и может привести к неправильному направлению поиска проблемы. Хорошо, что у Вас все получилось в результате.
avatar
3Qu, это системное сообщение, к 32-битности оно не имеет отношения, как я и говорил. Просто система сначала проверяет формат .exe/dll файла на соответствие спецификации PE Win32. Если он не соответствует, то выдается соответствующее сообщение. А уже в формате PE Win32 система может узнать платформу win32/x64 и т.п.

С путями, по сути, у вас тоже косяк. Надо их делать относительными к .lua скрипту, а не рассчитывать на то, что по умолчанию будет то, что вам нужно. В это случае проблем бы с изменением базового пути при обновлении Quik не было бы.
avatar
bstone, скорее всего так.
Что касается путей, то ошибок нет.Есть Луа переменные PATH и CPATH — там все пути определены. Достаточно путей по умолчанию.
В 8.11 не совсем в путях дело, а в некой ошибке в задании путей при запуске. Об этом написал в след топике. В итоге, обновил до 8.12, и все стало на свои места.
avatar
3Qu, не уловили суть. Надо строить пути к своим DLL относительно getScriptPath(). Тогда вам будет все равно, что там очередная версия квика с путями по умолчанию сделает.
avatar
bstone, require() работает с CPATH. Сама же ДЛЛ ищет ресурсы в своей папке, или по PATH виндов, либо в реестре, либо по указанному пути.
avatar

теги блога 3Qu

....все тэги



UPDONW
Новый дизайн