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

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 5, среднее: 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++: 75 комментариев

  1. Здравствуйте Дмитрий и другие авторы комментариев. Вот и я перешел на Квик вер.8.0. Перестали работать 32х разрядные ДЛЛ. Решил пересобрать ДЛЛ на 64 бита.
    Сделал все как написал уважаемый ПавелИ (спасибо за подробное описание). Единственная разница - у меня Visual Studio 2015.
    Так вот, у меня без ошибок собирается программа из примера только если я закомментирую одну строку:

    1
    
    //luaL_openlib(L, "QluaCSharpConnector", ls_lib, 0);

    Если я ее раскомментирую, то появляются ошибки:
    LNK2019 ссылка на неразрешенный внешний символ __iob_func в функции luaL_loadfile \lua5.1.lib(lauxlib.obj) 1
    LNK2019 ссылка на неразрешенный внешний символ fprintf в функции panic \lua5.1.lib(lauxlib.obj) 1
    LNK2019 ссылка на неразрешенный внешний символ sprintf в функции luaO_pushvfstring \lua5.1.lib(lobject.obj) 1
    В то же время функция

    1
    
     lua_pushstring(L, "Привет из C/C++");

    никаких ошибок не вызывает.
    Долго бился, ничего сделать не могу... Помогите пожалуйста разобраться.

  2. Все сделал по указанным в статье примерам. Скрипт писался в нотепаде++ методом копипаста. Длл QluaCSharpConnector в директории Квика есть + еще 3 файла типа .pdb/.lk. Однако при запуске скрипта в квике выходит соббщение, что ДЛЛ с таким именем не найдена. В какую сторону копать, чтобы пример ваш заработал, так как у самого мысли кончились.

  3. Дмитрий,здравствуйте. Пытаюсь пересобрать Вашу библиотеку SenderEmail.dll для Квика вер.8.0. Что-то не выходит. Сделал всё по инструкции, что написал человек в комментариях. Выдает такую ошибку в нескольких строках :
    'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project1 c:\users\sega\source\repos\project1\project1\project1.cpp 194
    Заранее извиняюсь за наглость, но может Вы могли бы обновить архив EmailSender.zip с перекомпилированной библиотекой под х64?

    1. Я не Дмитрий, но отвечу, надеюсь не обидитесь.
      Если только эта ошибка, то используйте функцию strcat_s вместо strcat . Собственно это и предлагается сделать в описании ошибки. Функция по моему аналогична, только еще нужно передать размер. Опять таки, по моему эта ошибка не связана с разрядностью.

    2. Поправил ошибки, сейчас осталось две :
      1)аргумент типа "WCHAR *" несовместим с параметром типа "const char *" Project1 C:\Users\Sega\source\repos\Project1\Project1\Project1.cpp стр.48
      2)"int strcmp(const char *,const char *)": невозможно преобразовать аргумент 1 из "WCHAR [260]" в "const char *" Project1 c:\users\sega\source\repos\project1\project1\project1.cpp стр. 48
      Всё в одной строке, причем если менять конфигурацию вновь на х32, то ошибка пропадает.

  4. Здравствуйте.
    Квик обновился до 8 версии, теперь он x64

    Помогите создать в visual studio 2013 библиотеку dll

    Просто сменил Release Win32 на Release x64 - не помогло.
    Выдает ошибки
    Ошибка 1 error LNK2001: неразрешенный внешний символ "luaL_openlib"
    Ошибка 2 error LNK2001: неразрешенный внешний символ "lua_pushstring"

    Либо нужны другие файлы lauxlib.h, lua.h, luaconf.h и lua5.1.lib

    Либо нужно как то настроить Visual Studio 2013, но я не знаю как.

    Помогите.

    1. Разобрался. Что и как делал:
      У меня Visual Studio 2013, на других версиях думаю так же, но не пробовал.
      1. Создал проект и настроил его по инструкции как на текущей странице (только файлы брал другие см.п.2, а так же см п.3)
      2. На сайте http://luabinaries.sourceforge.net/ выбрал "Lua 5.1.4 - Release 2 (sources and Visual C++ 8/9 binaries only)" Далее "Windows Libraries" и скачал "lua-5.1.4_Win64_vc12_lib.zip". Скаченные файлы разместил как в в описании.
      3. В Visual Studio 2013, при настройке проекта, я изменил: Конфигурация Активная (Release) Платформа x64 (Создал через диспетчер конфигураций)
      4. Код СИ скопировал для примера.
      5. Проект успешно собрал, dll библиотека появилась.
      6. Создал скрипт Lua, подключил через require. Запустил в QUIK 8.0.1.1 и все заработало.

      1. Подскажите, возникает ошибка
        LNK1561 точка входа должна быть определена!?
        в чем может быть причина..все по инструкции сделал, код из примера взял