Serg_ (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Создание и вызов DLL из QLua - прошу помощи
 
На правах эмоций завершаю данную тему:

Разрабы квика криворукие тв*ри позорные ... б%ть!!!!

Я делал это на версии 8.7.13 - только что обновил до 9.4.2.1 - все заработало.

nikolz - Спасибо и Вам за помощь!

Создание и вызов DLL из QLua - прошу помощи
 
Цитата
nikolz написал:
Цитата
Serg_ написал:
 
Цитата
nikolz  написал:
надо собирать 5.3 и пример я Вам дал для 5.3
и ссылку на документацию на 5.3
 Собсвенно для 5.3.5 - я тоже собирал - ошибка точно такая же.
Я вам все написал как делать.
Вы собираетесь делать или рассуждать?
если у вас 8.7 то все должно быть 5.3
-------------------
Но, где я сделал не так, как Вы сказали ??? :(
Или Вы имеете ввиду, что версия Lua должна быть именно 5.3, а не какие то там 5.3.5 ?
Создание и вызов DLL из QLua - прошу помощи
 
Цитата
nikolz написал:
надо собирать 5.3 и пример я Вам дал для 5.3
и ссылку на документацию на 5.3
Собсвенно для 5.3.5 - я тоже собирал - ошибка точно такая же.
Создание и вызов DLL из QLua - прошу помощи
 
Цитата
nikolz написал:
Почему у вас 5.4 в программе?
8.7 - это 5.3
У меня в папке с квиком - есть файл lua54.dll
Создание и вызов DLL из QLua - прошу помощи
 
Цитата
nikolz написал:
Цитата
Serg_ написал:
Версия квик - 8.7.13
гадать не видя весь код бессмысленно.
Сообщение говорит, что функции нет.
еще раз скажу, отлаживайте свою функцию без квик.
Научитесь сначала писать dll для луа.
Полагаю Вы знаете как отладить софт.
Это и есть ВЕСЬ код.
Создание и вызов DLL из QLua - прошу помощи
 
Версия квик - 8.7.13
Создание и вызов DLL из QLua - прошу помощи
 
Создание и вызов DLL из QLua - прошу пожалуйста помощи.

Второй день мучаюсь, ну ничего не получается, точнее получается, но только - Ошибки.

Вот по шагам я делаю так:

0)Скачиваю скомпилированные файлы Lua: lua-5.4.2_Win64_bin  -  https://sourceforge.net/projects/luabinaries/
1)Создаю проект в Visual Studio.
2)Создаю файл .cpp и копирую туда следующий код:
Код
#include <iostream>
#include <windows.h>



//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL


//=== Стандартная точка входа для DLL ==========================================================================//
BOOL APIENTRY DllMain(HANDLE hModule, DWORD  fdwReason, LPVOID lpReserved) 
{
    //Вроде бы это не обязательно
    return TRUE;
}




//=== Заголовочные файлы LUA ===================================================================================//
extern "C"
{
#include "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lauxlib.h"
#include "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lua.h"
}
#pragma comment(lib, "C:\\Users\\Serg\\source\\repos\\Quil_Lua_connector\\Lua_staticlib_files_x64_5.4\\lua54.lib")
//=== Заголовочные файлы LUA ===================================================================================//








//=== Реализация функций, вызываемых из LUA ====================================================================//
static int forLua_TestFunc(lua_State* L) {
    lua_pushstring(L, "Привет из C/C++");
    return(1);
}


//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_Reg ls_lib[] = {
    {"TestFunc", forLua_TestFunc},
    {NULL, NULL}
};

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) 
{
    luaL_newlib(L, ls_lib);
    lua_setglobal(L, "lua_dll_x64_name");
    return 1;
}

3)Компилирую этот код release/x64 и Visual Studio Создает - lua_dll_x64_name.dll
4)Помещаю созданный .dll в папку с info.exe.
5)Запускаю Quik и запускаю следующий скрипт:
Код
path = getScriptPath() .. "\\lua_dll_x64_name.dll"package.loadlib(path, "luaopen_lua_dll_x64_name")()

function main()
   message(lua_dll_x64_name.TestFunc())
end
6)И квик сразу же выдает ошибку:
Код
...Lua_script.lua.txt:2: attempt to call a nil value

Ну что не так то ?? ((((((
Lua - C++ - примеры
 
Цитата
Цитата
Вы напишите, как я написал или разбирайтесь как правильно раскрыть макрос
Вы уверены ?? Что у Вас это работает ?? У меня НЕ РАБОТАЕТ.
Lua - C++ - примеры
 
Цитата
nikolz написал:
Цитата
Вы напишите, как я написал или разбирайтесь как правильно раскрыть макрос
--------------
(luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
и нужно ли удалять значение из стека
lua_pushvalue(L, -1);
--------------------
у меня один оператор, а умник наплодил три.

Код
extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) 
{
    luaL_newlib(L, ls_lib);
    return 1;
}
Однако при запуске скрипта:
Код
path = getScriptPath() .. "\\lua_dll_x64_name.dll"
package.loadlib(path, "luaopen_lua_dll_x64_name")()

function main()
   message(lua_dll_x64_name.TestFunc())
end
Все равно в квике возникает ошибка:
Код
\Quil_Lua_connector\Lua_script.lua.txt:2: attempt to call a nil value
Lua - C++ - примеры
 
Цитата
nikolz написал:
sweg
Цитата
nikolz написал:
Цитата
Serg_ написал:
 
Цитата
nikolz  написал:
ну как знаете
я Вам пишу со своих работающих исходников
 Так  я не понял. А в чем ошибка то в lua_newtable(L);   ?

согласно документации можно и так и эдак:
Но если можно и так и эдак, то почему ошибка то возникает.
Lua - C++ - примеры
 
Цитата
nikolz написал:
ну как знаете
я Вам пишу со своих работающих исходников
Так  я не понял. А в чем ошибка то в lua_newtable(L);   ?
Lua - C++ - примеры
 
Цитата
nikolz написал:
Цитата
Serg_ написал:
 
Цитата
nikolz  написал:
у вас ошибка в
 Ну так написано у Swerg`а.
у него для разных версий есть
посмотрите для какой вы взяли пример
надо брать не ниже 5.3
Так я для 5.3 и взял.
Lua - C++ - примеры
 
Цитата
nikolz написал:
у вас ошибка в
Ну так написано у Swerg`а.
Lua - C++ - примеры
 
Цитата
nikolz написал:
Цитата
Serg_ написал:
 
Цитата
nikolz  написал:
 https://quik2dde.ru/viewforum.php?id=14  
 Сделал по примеру swerg:   https://quik2dde.ru/viewforum.php?id=14  

выдает ошибку.
какую?

Я делаю так:

Код
//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL

//=== Заголовочные файлы LUA ===================================================================================//
extern "C" {
#include "Lua\lauxlib.h"
#include "Lua\lua.h"
}

//=== Стандартная точка входа для DLL ==========================================================================//
BOOL APIENTRY DllMain(HANDLE hModule, DWORD  fdwReason, LPVOID lpReserved) {
    return TRUE;
}

//=== Реализация функций, вызываемых из LUA ====================================================================//
static int forLua_TestFunc(lua_State* L){
    lua_pushstring(L, "Привет из C/C++");
    return(1);
}


//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_Reg ls_lib[] = {
    {"TestFunc", forLua_TestFunc},
    {NULL, NULL}
};

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_lua_dll_x64_name(lua_State * L) {
    lua_newtable(L);
    luaL_setfuncs(L, ls_lib, 0);
    lua_pushvalue(L, -1);
    lua_setglobal(L, "lua_dll_x64_name");
    return 0;
}

Visual Studio компилирует .dll.

Я помещаю созданный lua_dll_x64_name.dll в папку с quik, где находися файл info.exe. Запускаю в quik скрипт:
Код
lua_dll_x64_name = require("lua_dll_x64_name")

message(lua_dll_x64_name.TestFunc())

Но quik выдает ошибку:
Код
attempt to index a boolean value (global 'lua_dll_x64_name')
Lua - C++ - примеры
 
Цитата
nikolz написал:
https://quik2dde.ru/viewforum.php?id=14
Сделал по примеру swerg: https://quik2dde.ru/viewforum.php?id=14

выдает ошибку.
Lua - C++ - примеры
 
Не могу понять даже, как дебажить эту ошибку.
Lua - C++ - примеры
 
Точнее вот эту ошибку:
Код
attempt to call a nil value
Lua - C++ - примеры
 
Цитата
swerg написал:
https://quik2dde.ru/viewforum.php?id=14
Извините, не могу зарегистрироваться на том форуме, не приходит письмо активации.

Если есть возможность, то могли бы Вы подсказать ?
Сделал, как в Вашем примере на 3 стр, Visual Studio создала dll ---> "lua_dll_x64_name.dll" - компилировал, как debug x64.
Скопировал "lua_dll_x64_name.dll" в папку с quik, где находится файл Info.exe и запустил скрипт:
Код
path = getScriptPath() .. "\\lua_dll_x64_name.dll"
package.loadlib(path, "luaopen_lua_dll_x64_name")()

function main()
   message(lua_dll_x64_name.TestFunc())
end
Однако quik выдает ошибку:
Код
Lua_script.lua.txt:3: attempt to index a boolean value (global 'lua_dll_x64_name')
Lua - C++ - примеры
 
Цитата
nikolz написал:
Цитата
Serg_ написал:
Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ?
Как сделать dll ?
Все есть безусловно официально.
В КВИК встроена виртуальная машина луа без каких либо изменений исходников
поэтому читайте API C для  lua.
-------------------------
Я так пишу функции для QUIK  на СИ от  колбек
до многопоточной обработки данных в LUA.
----------------------
QLUA - это библиотека написанная на API C.
--------------------
Или в чем то другом проблема?
Не могу понять, как через dll - все это делать. Откроено говоря - это неМного геморрой. Продукту 20 лет, а нормального API почему то нет.
Добавление вкладки и графика, Добавление вкладки и графика
 
Цитата
swerg написал:
Цитата
Serg_ написал:
Вопрос бы в том, как с помощью Quik qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ?
Тогда ответ прост: никак.
А как вот это рассматривать ?
https://forum.quik.ru/forum10/topic2161/
Добавление вкладки и графика, Добавление вкладки и графика
 
Цитата
swerg написал:
Теоретически можно конечно наэмулировать клики мышью через w32 библиотеку
https://quik2dde.ru/viewtopic.php?id=78

Но я бы не стал. Слишком тонко/ненадежно получится, думаю. Да и зачем?
Но причем тут эмуляция кликов ?
Вопрос бы в том, как с помощью Quik qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ?
Если мне нужна умуляция кликов - я использую WinApi, но как Вы и написали - в данном случае это будет "Слишком тонко/ненадежно" - поэтому и спрашиваю про qlua, есть ли там что то подобное ?
Lua - C++ - примеры
 
Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ?
Как сделать dll ?
Добавление вкладки и графика, Добавление вкладки и графика
 
Здравствуйте,

Подскажите пожалуйста, возможно ли, как то с помощью qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ?
Страницы: 1
Наверх