QUIK 8.0

Страницы: Пред. 1 2 3 4 След.
RSS
QUIK 8.0
 
Цитата
Анатолий написал:
Цитата
swerg написал:
Просто взять готовый проект и на его основе делать. Только переименовать )
Стал делать по вашему образцу, думаю сделать полезную подключаемую библиотечку
Код
  static int forLua_httprequest(lua_State  * L) {
 1         const char *  url  =  luaL_checklstring ( L,  1  );
 2    const char *  method  =  luaL_checklstring (L,  2 );
 3    const char *  parameters  =  luaL_checklstring (L,  3 );
 4    double SomeCounter  =  luaL_checknumber (L,  4 );
}

  

Т.е. - первые три аргумента  в функцию будут передаваться строчными, четвертый - число, MSVStudio 2107 лупит мне ошибки:
с 1 по 4ую строки - слишком мало аргументов в вызове функции,  в чем ошибка? Вроде все по вашему примеру...
Там же форум, можно спросить не отходя от кассы ;)

В luaL_checklstring() третьим параметром передайте nullptr

 
Цитата
Анатолий написал:
Вообщем все равно ошибки лупит, делаю все как в вашем образце а ошибки там где я даже ничего и не трогал:
Я не вижу что там сейчас на картинке за код и ошибки.
Приведите их здесь, пожалуйста. И полный ваш код.
 
Цитата
Анатолий написал:
Привет, слушай выручи пожалуйста - можешь помочь скомпилить библиотечку  https://github.com/jmckaskill/luaffi   я бился бился ничего не получилось, все  по мануалу автора делал неполучается
Там надо аккуратно разобраться с bat-файлом.
В нём указаны абсолютные пути до lib-файлов и до lua.exe (на диск Z:)
Эти пути надо просто поправить на свои.
Кроме того, часть h-файлов генерируется тут же при сборке через lua-скрипты, опять же надо разобраться и все настроить, чтобы генерация отрабатывала (запускалась Lua.exe) и сделать.

Может вы лучше напишете какие API функции вам нужны? вот честное слово - не верю я в магию "функции в любой dll можно вызвать из lua через эту библиотеку". Где-нибудь да обязательно вылезет проблема, которую замучаешься разгребать.

ЗЫ
Модераторы, выделите, плиз, сообщения про luaffi в отдельную тему. А то каша получается тут.
 
Цитата
swerg написал:
Я не вижу что там сейчас на картинке за код и ошибки.Приведите их здесь, пожалуйста. И полный ваш код.
Если кликнуть по картинке она увеличится, вроде на ней все разборчиво видно
Вот полный код:


Код
// Hm512.cpp: определяет экспортированные функции для приложения DLL.
//
#define LUA_LIB
#define LUA_BUILD_AS_DLL

//
// Пример простой библиотеки на C++ для вызова ее из LUA
// http://quik2dde.ru/viewtopic.php?id=18
//
#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <hmac_sha512.hpp>


// в случае вызова функций из LUA-кода во внешней DLL
// необходимо определить эти константы до подключения заголовочных файлов LUA


extern "C" {
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
#include <luaconf.h>
}





BOOL APIENTRY Hm512(HMODULE hModule,
   DWORD  ul_reason_for_call,
   LPVOID lpReserved
)
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
   case DLL_PROCESS_DETACH:
      break;
   }
   return TRUE;
}



static int forLua_Hmacsha512(lua_State *L) {

   const std::size_t l = 0;
   std::string secret = luaL_checklstring(L, 1, l);
   std::string params = luaL_checklstring(L, 2, l);

   HMAC_SHA512 hmac_sha512(secret, params);
   std::string d = hmac_sha512.hex_digest();

   // помещаем в стек результат умножения
   lua_pushstring(L, d.c_str());

   return(1);  // эта функция возвращает одно значение
}


// регистрация реализованных в dll функций, чтобы они стали "видимы" для LUA   Hmacsha512

static struct luaL_reg ls_lib[] = {
   { "Hm512", forLua_Hmacsha512 },
{ NULL, NULL }
};

extern "C" LUALIB_API int luaopen_Hm512(lua_State *L) {
   luaL_openlib(L, "Hm512", ls_lib, 0);
   return 0;
}



Вот еще раз картинка, ошибки как раз в строках с номерами на картинках, все делал один в один с вашего образца, правда у вас там функция вызываемая из луа должна возвратить число, а мне надо строку текста, поэтому функцию возвращающую текст взял из примера на 1ой странице - https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/, нехватает еще знаний в Си конечно, учу...
 
Цитата
 
 
Хедер  hmac_sha512.hpp если надо  https://cloud.mail.ru/public/FCfU%2FeuqRPJMBw
остальные хедеры из сорсов opessl -   https://www.openssl.org/source/openssl-1.1.1d.tar.gz
 
Цитата
swerg написал:
Там надо аккуратно разобраться с bat-файлом.В нём указаны абсолютные пути до lib-файлов и до lua.exe (на диск Z:)Эти пути надо просто поправить на свои.Кроме того, часть h-файлов генерируется тут же при сборке через lua-скрипты, опять же надо разобраться и все настроить, чтобы генерация отрабатывала (запускалась Lua.exe) и сделать.

Пути есс-но правил все пути, это же очевидно, к папке с Zerobranestudio - c:\ZeroBraneStudio\bin\   к примеру, правил и lua.exe на lua52.exe в разделе

Код
@set LUA_INCLUDE=Z:\c\lua-5.2.0\src
@set LUA_LIB=Z:\c\lua-5.2.0\lua5.2.lib
@set LUA_EXE=Z:\c\lua-5.2.0\lua.exe

закидывал и соответствующие lib'ы в c:\ZeroBraneStudio\bin\ отсюда
https://sourceforge.net/projects/luabinaries/files/  т.к. в комплекте с zerobrane они не идут,  ( но может надо было не только либы а и все остальное - exe и dll? )

Все равно не компилится, тут уже надо копать глубоко
Лучше уж сразу эту библиотеку себе скомпилить потом разберусь какие именно функции мне понадобятся, эта же библиотека встроена в LuaJit - т.е. если запускать луа-скрипты через луаджит то эту либу можно require'ить без проблем, но хочется иметь её отдельно
 
Запускал также msvcbuild с опцией debug-5.1 - все равно не компилится
 
вы выше читали что я писал?

сделать надо или так:

size_t l = 0;
std::string secret = luaL_checklstring(L, 1, &l);

или так:
std::string secret = luaL_checklstring(L, 1, nullptr);
 
Цитата
Анатолий написал:
Запускал также msvcbuild с опцией debug-5.1 - все равно не компилится
https://quik2dde.ru/viewtopic.php?id=300

скомпилировал x32 вариант, не проверял
с x64 пока разбираюсь
 
Если кому еще необходимо.
Я бился над сборкой socket и ssl под x64. Вроде собрал, но как-то нестабильно оно работало. В итоге нашел готовые сборки, более стабильно работающие.
А вот lCurl пока не удалось собрать под x64.

Вот сборки и примеры:
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
 
Цитата
Nikolay написал:
бился над сборкой socket и ssl под x64. Вроде собрал, но как-то нестабильно оно работало
У меня в ZerobraneStudio вообще не заработали твои бибилиотечки, зеробран ругается:
C:\distr\ZeroBraneStudio\bin\lua53.exe: error loading module 'ssl.core' from file 'C:\distr\ZeroBraneStudio\bin/clibs53/ssl.dll': %1 ( Какие-то кракозябры) Win32.
 
Цитата
Nikolay написал:
Если кому еще необходимо. Я бился над сборкой socket и ssl под x64. Вроде собрал
Незаработали они у меня потому что собрал ты их строго под Луа 5.1, может будешь так добр что соберешь все это еще и под Луа 5.3?
 
Цитата
Анатолий написал:
Цитата
Nikolay написал:
Если кому еще необходимо. Я бился над сборкой socket и ssl под x64. Вроде собрал
Незаработали они у меня потому что собрал ты их строго под Луа 5.1, может будешь так добр что соберешь все это еще и под Луа 5.3?
А зачем под Lua 5.3? В Квике 5.1. Все это только ради Квика и собиралось. В этом весь смысл.
Если под 5.3 и для сторонних скриптов, то, кажется, сборки есть готовые под 5.3.
 
Цитата
Nikolay написал:
А зачем под Lua 5.3? В Квике 5.1
Естественно что для 5.3 это уже не для квика надо, ненашел пока SSL 64 битного для луа 5.3, тебе же не трудно просто перекомпилить по 64 бита с луёвыми сорсами от 5.3 если у тебя уже проект готовый есть
 
Добрый день.
Нет случаем у кого-нибудь Lua Sqlite3?
пробую собрать проект в VS2017. исходники с lua.sqlite.org.
убрал варнинги. поставил Lua 5.1.5 vc15 (другого не нашел поновее).
остались ошибки типа "ссылка на неразрешенный внешний символ" в куче мест. видимо не подходит Lua.

пробовал с LuaRock, но со всеми плясками компилирует только x86, а не 64
 
Цитата
Eldar написал:
Добрый день.
Нет случаем у кого-нибудь Lua Sqlite3?
пробую собрать проект в VS2017. исходники с lua.sqlite.org.
убрал варнинги. поставил Lua 5.1.5 vc15 (другого не нашел поновее).
остались ошибки типа "ссылка на неразрешенный внешний символ" в куче мест. видимо не подходит Lua.

пробовал с LuaRock, но со всеми плясками компилирует только x86, а не 64
Мне удавалось скомпилить 64 и  на luarock и в VS. Даже запускалось все в quik, но работало 1 минуту и падало вместе с куиком.
Сами исходники написаны без учета особенностей 64 битной системы.

Пришлось на Lua написать небольшую библиотеку работы с текстовыми файлами как с таблицами.
 
Цитата
Eldar написал:
Добрый день.
Нет случаем у кого-нибудь Lua Sqlite3?
пробую собрать проект в VS2017. исходники с lua.sqlite.org.
убрал варнинги. поставил Lua 5.1.5 vc15 (другого не нашел поновее).
остались ошибки типа "ссылка на неразрешенный внешний символ" в куче мест. видимо не подходит Lua.

пробовал с LuaRock, но со всеми плясками компилирует только x86, а не 64
Напишите мне почтой, я дам
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Владимир написал:
Цитата
Eldar написал:
Добрый день.
Нет случаем у кого-нибудь Lua Sqlite3?
пробую собрать проект в VS2017. исходники с lua.sqlite.org.
убрал варнинги. поставил Lua 5.1.5 vc15 (другого не нашел поновее).
остались ошибки типа "ссылка на неразрешенный внешний символ" в куче мест. видимо не подходит Lua.

пробовал с LuaRock, но со всеми плясками компилирует только x86, а не 64
Мне удавалось скомпилить 64 и  на luarock и в VS. Даже запускалось все в quik, но работало 1 минуту и падало вместе с куиком.
Сами исходники написаны без учета особенностей 64 битной системы.

Пришлось на Lua написать небольшую библиотеку работы с текстовыми файлами как с таблицами.
текст не вариант. мне тогда проще на ODBC переделать, либо на Mysql.
все же с sqlite3 проще.
 
может кто-то уже выложить core.dll, которая нормально будет работать с квиков 8.1 ?  
 
Чет прям нарасхват либа. Будет ли работать, нормально или вообще, - не знаю, пробуйте.
https://dropmefiles.com/qJcUC
 
Господа, кто изволил потестить, дайте фидбек плиз. А то не знаю, куда проект бросить, в архив или в корзину.
 
Меня попросили собрать luaCom для Квик 8. Собрал. Но тесты показывают, что Квик 8.0-8.4 падает, плюс что-то с кодировкой символов.
Очень похоже на то, что было с luasql(ODBC).

Представители ARQA, что с моим обращением https://forum.quik.ru/forum10/topic4656/
Также и с этой библиотекой - Квик 8.4 падает, а на 7-ой версии работает.

При этом собранные мной luasocket прекрасно работают в 8-ой версии.

Если кто хочет потестировать
https://github.com/nick-nh/qlua/tree/master/luasql
https://github.com/nick-nh/qlua/tree/master/luaCOM
 
Цитата
Nikolay написал:
плюс что-то с кодировкой символов
А чем компилировали? Нынче по стандарту сишные-плюсовые файлы должны быть в utf-8, соответственно gcc, например, строки так и воспринимает, а под квик надо в 1251. По-хорошему в utf-16 надо конечно, но тут луа со своими однобайтовыми строками выбора не оставляет.

Кстати говоря, когда приложение падает без дампа и без сообщения, тупо оп и нету, это обычно повреждение стека. С учетом, что без длл квик не падает, можно поглядеть на наличие/отсутствие __stdcall у чего-нибудь в либе. Это если отбросить уже совсем очевидные вещи типа бесконечной рекурсии и убитого стека "небезопасной" строковой функцией (а в либе ворнинги о них выключены, то есть по-видимому используются только так).
 
Цитата
Nikolay написал:
Представители ARQA, что с моим обращением  https://forum.quik.ru/forum10/topic4656/
Вы прислали запрошенную информацию?
 
Цитата
Nikolay написал:
плюс что-то с кодировкой символов.
Таки дело не в бобине, взгляните в сорцы, файл tUtil.cpp, строки 111, 128, 171, 175. Возможно, список неполный.
 
Цитата
Sergey Gorokhov написал:
Цитата
Nikolay написал:
Представители ARQA, что с моим обращением   https://forum.quik.ru/forum10/topic4656/  
Вы прислали запрошенную информацию?
Конечно. Я общался через почту с Andrey Bezrukov
 
Цитата
Anton написал:
Цитата
Nikolay написал:
плюс что-то с кодировкой символов.
Таки дело не в бобине, взгляните в сорцы, файл tUtil.cpp, строки 111, 128, 171, 175. Возможно, список неполный.
Компилировал VS через nmake. Я не смотрел в код. Надо посмотреть значит, да. Правда то же, скомпилированное под Квик 7, работает, а у него utf тоже нет.
 
Цитата
Nikolay написал:
Я не смотрел в код. Надо посмотреть значит, да.
Заодно и в мейкфайл посмотрите, там кое-что генерируется из луа с помощью luac, получается *.lo, а потом с помощью bin2c из него получается *.loh. Так вот в мастере luacom5.lo уже лежит готовый. Очевидно, мейкфайл его пропустит (оставит как есть), а как есть он, сдается мне, 32-битный.
 
Цитата
Anton написал:
Цитата
Nikolay написал:
Я не смотрел в код. Надо посмотреть значит, да.
Заодно и в мейкфайл посмотрите, там кое-что генерируется из луа с помощью luac, получается *.lo, а потом с помощью bin2c из него получается *.loh. Так вот в мастере luacom5.lo уже лежит готовый. Очевидно, мейкфайл его пропустит (оставит как есть), а как есть он, сдается мне, 32-битный.
Это как раза было поправлено. Иначе ошибки линковки.
 
Nikolay, я тут малость поковырял luacom чисто из интереса, посмотрите, вот эта сборка будет ли падать?
 
Впрочем, можете квик не насиловать, она даже под консольным луа падает  на тестовом скрипте из поставки, откуда очевидно, что дело не в квике. Доходит вот докуда
Скрытый текст

Дальше мне рыть лень, это уже работа какая-то получается )  
 
Цитата
Nikolay написал:
Если кому еще необходимо.
Я бился над сборкой socket и ssl под x64. Вроде собрал, но как-то нестабильно оно работало. В итоге нашел готовые сборки, более стабильно работающие.
А вот lCurl пока не удалось собрать под x64.

Вот сборки и примеры:
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
Пытаюсь подцепить socket к скрипту
устанавливал библиотеку через luarocks, не заработало и ругается на разрядность
Попытался использовать библиотеки по ссылке выше, пишет ошибку
Код
error loading module 'socket.core' from file 'C:\Lua\lua_socket_ssl\clibs_x64\socket\core.dll':
   The specified module could not be found.
Код
error loading module 'socket.core' from file 'C:\Lua\lua_socket_ssl\clibs_x86\socket\core.dll':
   %1 is not a valid Win32 application.
Замучился уже, как сокеты прикрутить к последней версии Quik?
Хочу нормальный обмен данными сделать с внешними приложениями, а тут такая подстава
Можно, конечно, написать библиотеку на С которая будет в свою очередь работать с сокетами и прочим, но надеюсь что обойдется
 
После многих часов мучений удалось все завести
заработали модули luasocket и luasec
работают https запросы

1) Выяснил, что когда собираются модули, то они линкуются к имени библиотеки, т.е. если собрать с линковкой к библиотеке lua51.dll то модуль не будет работать с библиотекой lua5.1.dll
Это важно при сборке каких-либо пакетов из исходников, необходимо правильно указывать к какой библиотеке линковаться
Quik использует lua5.1.dll, поэтому, там где есть линковка к библиотеке lua, то нужно проверить имя
Если возникает ошибка
The specified module could not be found.
То нужно проверить что тот модуль собран с правильной линковкой

2) Что я сделал:

2.1) Собрал lua из исходников под Visual Studio под x64 по этой инструкции
https://www.youtube.com/watch?v=TALXtup2CjI
Исходники - https://www.lua.org/ftp/lua-5.1.5.tar.gz

2.2) Установил менеджер пакетов luarocks для удобства в будущем
http://luarocks.github.io/luarocks/releases/ отсюда скачал luarocks-3.3.1-win32.zip потому что он содержит все необходимые элементы
устанавливал командой install.bat /L /P <путь куда установить>

2.3) Заменил в luarocks lua5.1.dll, lua5.1.exe и luac5.1.exe собранными в п.1

2.4) Установил OpenSSL версию для разработчиков со всеми библиотеками
https://slproweb.com/products/Win32OpenSSL.html

2.5) Перекинул библиотеки из "C:\OpenSSL-Win64-src\lib\VC"
libcrypto64MD.lib и libssl64MD.lib в папку "C:\OpenSSL-Win64-src\bin"
заменил в именах 64 на 32, это требуется для сборки luasec

2.6) Через командную строку Visual Studio x64 установил пакеты luascoket и luasec
luarocks install luasocket
luarocks install luasec OPENSSL_DIR=C:\OpenSSL-Win64-src

Отдельно собранная библиотека luasocket с lua x64
https://drive.google.com/file/d/1MtCcT_aRByKLiFVHtiemD_KQyqNbeNPp/view?usp=sharing

Библиотеки luasocket и luasec установленные и собранные при помощи luarocks
https://drive.google.com/file/d/1CL_Sz5dMre9ZhDeYp32CFOzX0BnkGWBo/view?usp=sharing

Пример получения данных из blackterminal, если положить библиотеки из архива по ссылке выше в папку со скриптом, то все должно работать
Код
package.cpath = getScriptPath() .. "\\systree\\lib\\lua\\5.1\\?.dll;" .. package.cpath
package.path = getScriptPath() .. "\\systree\\share\\lua\\5.1\\?.lua;" .. package.path
--package.cpath = "C:\\Lua\\luarocks\\systree\\lib\\lua\\5.1\\?.dll;" .. package.cpath
--package.path = "C:\\Lua\\luarocks\\systree\\share\\lua\\5.1\\?.lua;" .. package.path
local https = require("ssl.https")

PrintDbgStr("Start: [" ..  getScriptPath() .. "]")
is_run = false

function OnInit()
    is_run = true
end

function main()
    local request_body = "{\"getemlist\":\"flag\",\"key\":\"TEST\"}"
    local response_body = {}
    local res, code, headers, status = https.request{
        url = "https://blackterminal.ru/api/0.0.8",
        method = "POST",
        headers = 
        {
            ["Content-Type"] = "application/json; charset=utf-8";
            ["Content-Length"] = string.len(request_body);
        },
        source = ltn12.source.string(request_body),
        sink = ltn12.sink.table(response_body),
    }

    PrintDbgStr("res: "..tostring(res))
    PrintDbgStr("code: "..tostring(code))
    PrintDbgStr("headers: "..tostring(headers))
    PrintDbgStr("status: "..tostring(status))
    PrintDbgStr("body: "..tostring(table.concat(response_body)))
end

function OnStop()
    is_run = false
end

function OnClose()
    is_run = false
end

 
Собрал luasocket и luasec под lua 5.3 x64
Для линковки использовал эти библиотеки
!!! имя библиотеки lua53.dll
https://sourceforge.net/projects/luabinaries/files/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64...

Архив со сборкой здесь
https://drive.google.com/file/d/1NiIfSLRcJUV7IdqnZVadtRmD3z2H5Q3Y/view?usp=sharing
 
Цитата
MikhaZz написал:
Выяснил, что когда собираются модули, то они линкуются к имени библиотеки
Цитата
MikhaZz написал:
Для линковки использовал эти библиотеки
На самом деле для линковки сама по себе длл вообще не нужна. Нужна соответствующая .lib, а в ней по сути только имя длл и секция EXPORTS без конкретных адресов. Поэтому у вас прокатывает фокус: линкуете с длл из луа, а в рантайме подгружается длл из квика. Можете сами посмотреть дампбином, адреса функций в них разные, а оно работает. Но лучше выдрать все же .lib из квиковской длл и линковать с ней.
 
Еще хочу дополнить
Можно взять готовые бинарники и библиотеки отсюда
https://sourceforge.net/projects/luabinaries/files/5.1.5/
1) https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/lua-5.1.5_Win64_bin.zip...
2) https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Dynamic/lua-5.1.5_Win64...

Дальше все содержимое архивов скидывается в папку luarocks и уже все нормально собирается из командной строки Visual Studio x64
Т.е. можно исключить этап сборки lua из исходников
 
Цитата
Anton написал:
Цитата
MikhaZz написал:
Выяснил, что когда собираются модули, то они линкуются к имени библиотеки
 
Цитата
MikhaZz написал:
Для линковки использовал эти библиотеки
На самом деле для линковки сама по себе длл вообще не нужна. Нужна соответствующая .lib, а в ней по сути только имя длл и секция EXPORTS без конкретных адресов. Поэтому у вас прокатывает фокус: линкуете с длл из луа, а в рантайме подгружается длл из квика. Можете сами посмотреть дампбином, адреса функций в них  разные , а оно работает. Но лучше выдрать все же .lib из квиковской длл и линковать с ней.
Да, я понимаю что данные о том куда линковать в .lib содержатся, но не подумал о том чтобы по простому там имя подправить
Я ни где нормальной инструкции не мог найти как заставить это все дело работать, пришлось разбираться
Думаю, там где-то более хитрые зависимости есть, поэтому лучше брать правильные .lib файлы
Самое главное, что меня смутило, это то что пробовал разные готовые сборки под х64, а они все равно не работали!
Вываливалась ошибка "The specified module could not be found."
Потом только дошло что проблема линковки и надо все пересобирать так, чтобы библиотеки модулей были прилинкованы к правильным библиотекам
До кучи в пакетах luarocks уже готовые конфиги, по простому не изменить, из-за этого пришлось тоже повозиться
 
Еще пожелание
В справке которая идет в комплекте в описании функции PrintDbgStr нет никакой информации о том куда осуществляется вывод, приходится дополнительно искать, хотя будь эта информация в справке, было бы сэкономлено много времени
По хорошему, можно DebugView в папку с Quik положить или хотя бы ссылку на нее в справке
 
Цитата
MikhaZz написал:
но не подумал о том чтобы по простому там имя подправить
Там имя в каждом экспорте дублируется, руками править тяжко, проще заново сгенерировать .lib из переименованной длл. Пишете простой батничек
Код
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-4" %%1 in ('dumpbin /exports %1') do (
    set /a ordinal=%%1 2>nul
    set /a hint=0x%%2 2>nul
    set /a rva=0x%%3 2>nul
    if !ordinal! equ %%1 if !hint! equ 0x%%2 if !rva! equ 0x%%3 set exports=!exports! /export:%%4
)
for /f %%i in ("%1") do set dllpath=%%~dpni
start lib /out:%dllpath%.lib /machine:x64 /def: %exports%
и запускаете под visual studio command prompt (x64) с именем нужной либы. Генерируется .lib и .exp, второй можно сразу в корзину бросать.
Цитата
MikhaZz написал:
лучше брать правильные .lib файлы
Конечно желательно. Вон тут недавно вопрос был про длл от стокшарпа, глянул в нее, а она к qlua.dll прилинкована. А этого нельзя делать, только к lua5.1.dll. В свое время написал небольшой хост, тксть недоквик для бедных, чтобы свои длл туда грузить и гонять под отладчиком, так вот если его линковать с квиковской qlua.dll, хост не завершается нормально, висит чего-то ждет, а с квиковской же lua5.1.dll все нормально. При том, что вторая таки подгружает первую и еще несколько квиковских длл.
 
Цитата
Anton написал:
Впрочем, можете квик не насиловать, она даже под консольным луа падает  на тестовом скрипте из поставки, откуда очевидно, что дело не в квике. Доходит вот докуда     Скрытый текст      
 
Дальше мне рыть лень, это уже работа какая-то получается )  
Да, увидел. Уже подумалось, что проще консольную программку написать, чем библиотеки насиловать. У меня почта так отпраляется и читается. Надежней.
 
Цитата
MikhaZz написал:
Еще пожелание
В справке которая идет в комплекте в описании функции PrintDbgStr нет никакой информации о том куда осуществляется вывод, приходится дополнительно искать, хотя будь эта информация в справке, было бы сэкономлено много времени
По хорошему, можно DebugView в папку с Quik положить или хотя бы ссылку на нее в справке
Здравствуйте!

Ваше пожелание зарегистрировано.  Мы постараемся рассмотреть его и  сообщить Вам результаты анализа. Впоследствии, по результатам анализа,  будет приниматься решение о реализации пожелания в будущих версиях ПО.
 
Цитата
MikhaZz написал:

Отдельно собранная библиотека luasocket с lua x64
https://drive.google.com/file/d/1MtCcT_aRByKLiFVHtiemD_KQyqNbeNPp/view?usp=sharing

Библиотеки luasocket и luasec установленные и собранные при помощи luarocks
https://drive.google.com/file/d/1CL_Sz5dMre9ZhDeYp32CFOzX0BnkGWBo/view?usp=sharing

Пример получения данных из blackterminal, если положить библиотеки из архива по ссылке выше в папку со скриптом, то все должно работать
Код
  package.cpath  =   getScriptPath ()  ..   "\\systree\\lib\\lua\\5.1\\?.dll;"   ..  package.cpath
package.path  =   getScriptPath ()  ..   "\\systree\\share\\lua\\5.1\\?.lua;"   ..  package.path
 --package.cpath = "C:\\Lua\\luarocks\\systree\\lib\\lua\\5.1\\?.dll;" .. package.cpath 
 --package.path = "C:\\Lua\\luarocks\\systree\\share\\lua\\5.1\\?.lua;" .. package.path 
 local  https  =   require ( "ssl.https" )

 PrintDbgStr ( "Start: ["   ..    getScriptPath ()  ..   "]" )
is_run  =   false 

 function   OnInit ()
    is_run  =   true 
 end 

 function   main ()
     local  request_body  =   "{ \" getemlist \" : \" flag \" , \" key \" : \" TEST \" }" 
     local  response_body  =  {}
     local  res, code, headers, status  =  https.request{
        url  =   "https://blackterminal.ru/api/0.0.8" ,
        method  =   "POST" ,
        headers  =  
        {
            [ "Content-Type" ]  =   "application/json; charset=utf-8" ;
            [ "Content-Length" ]  =   string.len (request_body);
        },
        source  =  ltn12. source.string (request_body),
        sink  =  ltn12. sink.table (response_body),
    }

     PrintDbgStr ( "res: "  .. tostring(res))
     PrintDbgStr ( "code: "  .. tostring(code))
     PrintDbgStr ( "headers: "  .. tostring(headers))
     PrintDbgStr ( "status: "  .. tostring(status))
     PrintDbgStr ( "body: "  .. tostring( table.concat (response_body)))
 end 

 function   OnStop ()
    is_run  =   false 
 end 

 function   OnClose ()
    is_run  =   false 
 end 

  

С вашими архивами и вашим примером выдает ошибку
"error loading module 'ssl.core' from file 'C:\Lua\systree\lib\lua\5.1\ssl.dll': Не найден указанный модуль"
Путь правильный...
В чем может быть проблема? Ткните носом плиз)))
 
Цитата
MikhaZz написал:
Собрал luasocket и luasec под lua 5.3 x64
Для линковки использовал эти библиотеки
!!! имя библиотеки lua53.dll
https://sourceforge.net/projects/luabinaries/files/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64...

Архив со сборкой здесь
https://drive.google.com/file/d/1NiIfSLRcJUV7IdqnZVadtRmD3z2H5Q3Y/view?usp=sharing

В Quik 8.5 работает без проблем. Благодарю.
 
Пытаюсь постепенно переходить на 64bit QUIK ))  Имеется сложный фреймворк, связка lua с .dll , памяти занимает много, но выделение памяти контролируется.

Ранее .dll под 32bit компилировал в VS2013, работало всё на последней 32bit версии QUIK на слабом ноуте с 4ГБ памяти с процессором Intel (так же всё работало и на выделенном сервере)

Под 64bit компилируется на VS2017, версия QUIK 8.3.2.4 , работает на достаточно мощном ноуте, 12ГБ памяти, но с процессором AMD.

32bit вариант мог работать неделями, не закрывая квик, и работало зараз по 5-6 роботов, проблем не было совершенно.

64bit запустил одного робота, работает около часа, потом QUIK внезапно слетает, даже приблизительную причину аварийной остановки определить невозможно, т.к. не остаётся ни дампов , ни каких-то записей в моём логгере, т.е. причина останова, по всей видимости, очень серьёзная.

Вопрос1: была у кого-нибудь такая ситуация?

Вопрос2: может это быть как-то связано с особенностями процессоров AMD?
 
Цитата
Александр Волфовиц написал:
Вопрос1: была у кого-нибудь такая ситуация?
Когда программа (любая) падает мгновенно и без каких-то сообщений, даже под отладчиком, - была конечно, обычно это повреждение стека тем или иным способом. Конкретно по ситуации (переход с 32 на 64) я б первым делом включил все ворнинги в компиляторе и посмотрел, где происходит урезание 64 бит до 32 и где signed/unsigned mismatch в сравнениях, скорей всего откуда-то оттуда ноги растут. Смотрите сами: первые часы все нормально, потом что-то дорастает до 64 бит, не лезет в 32 и крэш. Про AMD я б в последнюю очередь думал.
 
Цитата
Александр Волфовиц написал:
Пытаюсь постепенно переходить на 64bit QUIK ))  Имеется сложный фреймворк, связка lua с .dll , памяти занимает много, но выделение памяти контролируется.

Ранее .dll под 32bit компилировал в VS2013, работало всё на последней 32bit версии QUIK на слабом ноуте с 4ГБ памяти с процессором Intel (так же всё работало и на выделенном сервере)

Под 64bit компилируется на VS2017, версия QUIK 8.3.2.4 , работает на достаточно мощном ноуте, 12ГБ памяти, но с процессором AMD.

32bit вариант мог работать неделями, не закрывая квик, и работало зараз по 5-6 роботов, проблем не было совершенно.

64bit запустил одного робота, работает около часа, потом QUIK внезапно слетает, даже приблизительную причину аварийной остановки определить невозможно, т.к. не остаётся ни дампов , ни каких-то записей в моём логгере, т.е. причина останова, по всей видимости, очень серьёзная.

Вопрос1: была у кого-нибудь такая ситуация?

Вопрос2: может это быть как-то связано с особенностями процессоров AMD?

Я еще для 8.0 версии собирал ODBC драйвер. Падал почти сразу. Но... После общения с тех. поддержкой ARQA я попробовал записать дамп падения.
Мне прислали утилиту, дающую возможность снять дамп при работе Квика - ForDump.

Так вот дальше стало все интерснее, при запуске этой утилиты Квик не падал. Без нее падает. Т.е. дамп не сделать - не падает ведь. А без утилиты дампа нет.
Т.е. на лицо некая особенность обмена через стек при запущенной утилите.

Похоже без оптимизации библиотек под Квик x64 не обойтись.
 
Nikolay,эта утилита - ForDump - публичная? Или нужно персонально обращаться в компанию?

И ещё: причину "падения" вы так и не нашли? А как работал ваш драйвер на 32bit?
 
Цитата
Nikolay написал:
Так вот дальше стало все интерснее, при запуске этой утилиты Квик не падал. Без нее падает.
А вот такое поведение характерно для косяков в межпоточном взаимодействии. То же самое вид сбоку: под отладчиком не падает, а без него падает. Более конкретно какой-то поток что-то выдергивает из-под носа у другого потока, отладчик/дампер все замедляет и ошибки нет.
 
Цитата
Anton написал:
где происходит урезание 64 бит до 32 и где signed/unsigned mismatch в сравнениях, скорей всего откуда-то оттуда ноги растут
unsigned переменных нет вообще, код написан очень просто. Я просто взял проект из VS2013, поместил в VS2017, открыл, пофиксил все ворнинги, на которые ругалась новая версия VS, переключил выход с 32bit на 64bit - и всё!

Т.е., отлично работающий код, с многократно пофиксиными багами на периоде 3,5 года, просто перекомпилирован на новую битность - и не работает!
Страницы: Пред. 1 2 3 4 След.
Читают тему
Наверх