гадать не видя весь код бессмысленно. Сообщение говорит, что функции нет. еще раз скажу, отлаживайте свою функцию без квик. Научитесь сначала писать dll для луа. Полагаю Вы знаете как отладить софт.
Это и есть ВЕСЬ код.
Создание и вызов DLL из QLua - прошу помощи
Пользователь
Сообщений: Регистрация: 18.09.2022
20.09.2022 19:35:13
Версия квик - 8.7.13
Создание и вызов DLL из QLua - прошу помощи
Пользователь
Сообщений: Регистрация: 18.09.2022
20.09.2022 19:33:33
Создание и вызов DLL из QLua - прошу пожалуйста помощи.
Второй день мучаюсь, ну ничего не получается, точнее получается, но только - Ошибки.
Вот по шагам я делаю так:
0)Скачиваю скомпилированные файлы Lua: - 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++ - примеры
Пользователь
Сообщений: Регистрация: 18.09.2022
20.09.2022 19:13:37
Цитата
Цитата
Вы напишите, как я написал или разбирайтесь как правильно раскрыть макрос
Вы уверены ?? Что у Вас это работает ?? У меня НЕ РАБОТАЕТ.
Вы напишите, как я написал или разбирайтесь как правильно раскрыть макрос -------------- (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) и нужно ли удалять значение из стека lua_pushvalue(L, -1); -------------------- у меня один оператор, а умник наплодил три.
Извините, не могу зарегистрироваться на том форуме, не приходит письмо активации.
Если есть возможность, то могли бы Вы подсказать ? Сделал, как в Вашем примере на 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')
написал: Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ? Как сделать dll ?
Все есть безусловно официально. В КВИК встроена виртуальная машина луа без каких либо изменений исходников поэтому читайте API C для lua. ------------------------- Я так пишу функции для QUIK на СИ от колбек до многопоточной обработки данных в LUA. ---------------------- QLUA - это библиотека написанная на API C. -------------------- Или в чем то другом проблема?
Не могу понять, как через dll - все это делать. Откроено говоря - это неМного геморрой. Продукту 20 лет, а нормального API почему то нет.
Добавление вкладки и графика, Добавление вкладки и графика
написал: Вопрос бы в том, как с помощью Quik qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ?
Тогда ответ прост: никак.
А как вот это рассматривать ?
Добавление вкладки и графика, Добавление вкладки и графика
Пользователь
Сообщений: Регистрация: 18.09.2022
19.09.2022 10:22:56
Цитата
swerg написал: Теоретически можно конечно наэмулировать клики мышью через w32 библиотеку
Но я бы не стал. Слишком тонко/ненадежно получится, думаю. Да и зачем?
Но причем тут эмуляция кликов ? Вопрос бы в том, как с помощью Quik qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ? Если мне нужна умуляция кликов - я использую WinApi, но как Вы и написали - в данном случае это будет "Слишком тонко/ненадежно" - поэтому и спрашиваю про qlua, есть ли там что то подобное ?
Lua - C++ - примеры
Пользователь
Сообщений: Регистрация: 18.09.2022
18.09.2022 20:51:03
Подскажите, есть ли какие ни будь условно официальные примеры, как связать С++ с Quik ? Как сделать dll ?
Добавление вкладки и графика, Добавление вкладки и графика
Пользователь
Сообщений: Регистрация: 18.09.2022
18.09.2022 18:38:38
Здравствуйте,
Подскажите пожалуйста, возможно ли, как то с помощью qlua добавить вкладку и добавить на ней график свечей какого либо инструмента ?