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

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

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

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

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

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

  1. Объясните мне пожалуйста, почему я не могу сделать коннектор со с# при помощи LuaInterface или NLog без всякого гемора с с++ или оберток к qlua.dll? Ведь в скрипте можно обернуть любую функцию qlua, в калбеках я могу ковертировать таблицы в класс LuaTable или какие-нибудь свои структуры и вызвать функцию зажигающее событие .net... Где засада?

      1. Здравствуйте, я не изучал вопрос не по LuaInterface не по NLua, так что ничего не могу сказать по этому поводу. Вот здесь один из участников сайта привел пример того, как без C++ обходится в связке, может быть Вам это поможет: https://quikluacsharp.ru/stati-uchastnikov/lua-c-bez-s-dll/
        Если Вы найдете более простой работающий способ, поделитесь, пожалуйста, думаю многим будет интересно. Сам я, когда искал решение, наткнулся на вариант с C++, он меня устроил и я на нем остановился.

  2. Добрый день всем.
    Ошибка - error loading module 'QluaCSharpConnector' from file '.\QluaCSharpConnector.dll':. Не найден указанный модуль.

    РЕШЕНИЕ ПРОБЛЕМЫ на компах, отличных от того на котором собирали dll (для Visual Studio. С другими IDE не подскажу - сам бы хотел знать):
    1. Компилить в Release.

    2. Использовать опцию "Runtime Library = Multi-Threaded (/MT)" в
    настройках C++ проекта.
    (картинка https://quik2dde.ru/static-img/cpp_lua-2-03.png)
    (Solution Explorer -> ПКМ на проекте -> раздел C++ -> Code Generation.
    Там ставим Runtime Library = Multi-Threaded /MT.)

    3. На Visual Studio 2012 и выше использовать XP toolset для того,
    чтобы программа могла работать на Windows XP и Server 2003.
    (картинка http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/7725.xptarget.png)
    (Solution Explorer -> ПКМ на проекте -> Configuration Properties -> - General .
    Там ставим Platform toolset =XP toolset.)

    P.S. Сам столкнулся с проблемой, когда отправил другу готовую DLL. Долго не мог понять почему у меня работает, а у него нет. Оказалось что можно не устанавливать ни LuaForWindows ни в microsoft c++ redistributable 20ХХ года, а просто собрать dll со всеми зависимостями.
    P.S.S. Нашел подробное описание 2го пункта тут: https://quik2dde.ru/viewtopic.php?id=18&p=2

  3. Процесс создания dll-библиотеки ясен, за что вам Спасибо.

    Но как эту библиотеку прицепить к C# приложение???
    И как из своего приложения посылать в луа-скрипт сообщения или команды и наоборот из луа скрипта посылать данные в приложение?

  4. Здравствуйте. DLL написанная на С++ в VS 2015 работает. Но мне удобнее работать с DLL в Builder C++6. Компилируется нормально, но никак не могу запустить. Quik выдает ошибку "errorloading module 'QLuaCPP' from file '.\QLuaCPP.dll': Не найдена указанная процедура." ДЛЛки в Билдере немного по другому делаются (__declspec(dllexport)). Может что подскажите...

  5. На другой машине где не было компиляции скорее всего не хватает microsoft visual c++ 2013(либо другой номер, посмотрите какой использовался при компиляции) для windows 7 32 bit