Коннектор DLL QUIK - QLua(Lua) - C++

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 6, среднее: 5,00 из 5)
Загрузка...

Qlua-csharp-connector-dll
Для Quik 8 x64 скачать готовое решение VS 2019 Community можно по этой ссылке 

Для того, чтобы обмениваться данными между скриптом Qlua и приложением на C# требуется библиотека DLL, написанная на языке C/C++. Для этого в Visual Studio нужно "Создать проект", выбрав язык C++ и тип проекта "Пустой проект". Создайте новую папку для проекта, если необходимо.

В Visual Studio Community 2013 это выглядит следующим образом:
В результате, Visual Studio создаст решение и один проект в нем:
Сейчас можно добавить в проект файл исходного кода
Следующим шагом необходимо добавить в проект заголовочные файлы и библиотеку Lua
Далее, нужно настроить свойства проекта:
Добавление базового кода
Сейчас можно 'Собрать' проект
Использование библиотеки DLL в скрипте QLua(Lua)
Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Коннектор DLL QUIK - QLua(Lua) - C++: 83 комментария

  1. Здравствуйте еще раз! Большое спасибо за ответ, но без расширения тоже пробовал (вернее без него и было изначально, а уже потом расширение вписал). Все сделал строго по инструкции создания dll. Почитал вопросы других участников, но с подобной проблемой ничего не нашел.

  2. Добрый день! По вашему примеру скомпилировал QluaCSharpConnector.dll в папку с квиком. При запуске Lua скрипта отладчик ругается на самую первую строку require("QluaCSharpConnector.dll") сообщение "error loading module 'QluaCSharpConnector.dll' from file 'C:\Program Files\QUIK-Junior\QluaCSharpConnector.dll':. Название библиотеки отлично от названия скрипта. В сама скрипте название библиоеки совпадает с названием файла библиотеки. Процедуры в файле dll все есть. Подскажите пожалуйста что еще можно проверить? Спасибо!
    Не найдена указанная процедура."

      1. Добрый день! Аналогичная проблема. DLL подключена как require("QluaCSharpConnector"). На компьютере, где была компиляция все работает. На другом -нет.
        Ошибка - error loading module 'QluaCSharpConnector' from file '.\QluaCSharpConnector.dll':. Не найден указанный модуль. Не подскажите, в чем проблема?

        1. Добрый день, воспользуйтесь вот этой программкой http://www.dependencywalker.com/, просто скачайте ее, разархивируйте, запустите exe файл, программка откроется(ее не нужно устанавливать), выберите в ней открыть файл, откройте свою dll и увидите чего ей не хватает, скорее всего это какие-то lua библиотеки, возможно из-за того, что у Вас не установлена Lua for Windows.

          Если захотите более детально научиться работать с этой программкой, то вот инструкции: http://microsin.net/programming/PC/dependency-walker.html

  3. Здравствуйте.
    Можно вас попросить привести пример создания DLL на Code::Blocks? Понимаю, что принцип один и тот же, но что-то у меня не ладится, компилятор ругается на функции lua_pushstring и luaL, дескать undefined reference.

    1. Здравствуйте, Эльза! Я с этой средой не знаком, к сожалению, возможно попробую, как время будет, но прямо сейчас не могу точно. А Вы точно не забыли все файлы заголовочные подключить lauxlib.h, lua.h, luaconf.h? В свойствах проекта в дополнительные зависимости (AdditionalDependencies) добавить Lua\lua5.1.lib ? И чем Вам Visual Studio не нравится?)

      1. Заголовочные файлы подключила, в параметрах линковщика либ-ку указала. Причем, если не добавлять к файлам проекта саму библиотеку, то пишет, что "не удается открыть lua5.1.lib ", а если добавить не только к параметрам линкера, но и к файлам проекта, то undefined reference.

        А в MS Studio мне в основном не нравится вес дистрибутива) На моем домашнем интернете 100 мб инсталяхи Code::Blocks еще как-то можно стянуть, а вот студию...

          1. Давайте я Вам почтой отправлю диск с дистрибутивом студии, адрес только напишите на reply@quikluacsharp.ru. Жил одно время с модемом в виде телефона подключенного к компьютеру со скоростью 64Кб/с. Так что понимаю)

            1. Я именно с таким сейчас и живу) Что до диска, то спасибо, конечно, но дорого выйдет посылка - я на Украине живу) Лучше погуглю оффлайн инсталятор Community, все равно я сейчас на распутье, встала перед выбором среды с бесплатной или хотя бы с условно-бесплатной лицензией. Хотела было по-честному купить у Embarcadero их старый 6-й Билдер, но он что-то совсем неприличных денег стоит, пришлось искать варианты. В общем-то Код::Блокс меня устраивает, хотя и со своими заморочками, так что я либо подожду пока вы выложите пример для этой IDE, либо скачаю Студию. Уж не знаю, что произойдет раньше)) В любом случае, спасибо за помощь)

              1. Я в лицензиях не разбираюсь, но в в версии комьюнити читал что можно свободно разрабатывать до 5 человек вроде бы, может быть Вы меня просветите в 2-х словах какие бывают лицензии, какие разрешения и ограничения накладывают?

  4. Добрый день!Не получается....VS 2012 выдает ошибки.
    Ошибка 3 error C1083: Не удается открыть файл включение: : No such file or directory c:\users\алексей\documents\visual studio 2012\projects\connectorluaquik\connectorluaquik\connectorluaquik.cpp 1 1 ConnectorLuaQuik
    Ошибка 2 error C2006: #include: требуется имя файла, а не "newline" c:\users\алексей\documents\visual studio 2012\projects\connectorluaquik\connectorluaquik\connectorluaquik.cpp 1 1 ConnectorLuaQuik
    5 IntelliSense: идентификатор "BOOL" не определен c:\Users\Алексей\Documents\Visual Studio 2012\Projects\ConnectorLuaQuik\ConnectorLuaQuik\ConnectorLUAQuik.cpp 14 1 ConnectorLuaQuik
    7 IntelliSense: идентификатор "forLua_TestFunc" не определен c:\Users\Алексей\Documents\Visual Studio 2012\Projects\ConnectorLuaQuik\ConnectorLuaQuik\ConnectorLUAQuik.cpp 29 16 ConnectorLuaQuik
    4 IntelliSense: требуется имя файла c:\Users\Алексей\Documents\Visual Studio 2012\Projects\ConnectorLuaQuik\ConnectorLuaQuik\ConnectorLUAQuik.cpp 1 1 ConnectorLuaQuik
    6 IntelliSense: требуется точка с запятой ";" c:\Users\Алексей\Documents\Visual Studio 2012\Projects\ConnectorLuaQuik\ConnectorLuaQuik\ConnectorLUAQuik.cpp 14 15 ConnectorLuaQuik

  5. Добрый день!
    Данные пример прекрасно создает dll c именем "QluaCSharpConnector", который нормально работает.
    Однако любая смена имени (например на"QluaCSharp") приводит к ошибке в LUA ".\QluaCSharp.lua:1: loop or previous error loading module 'QluaCSharp'".
    Не подскажите, где стоит привязка к имени в dll (может в заголовочных файлах), везде где можно менял (поиск по решению ничего не дал).

      1. Отправил Вам на почту архив с проектом и скрипт Lua, все как в примере, только наименование сменил на QluaCSharpAllTrades, при запуске скпипт не может подтянуть dll.