Ошибка скрипта Lua

Страницы: 1
RSS
Ошибка скрипта Lua
 
В Lua загружаю библиотеку написанную мной на C++ (я предварительно переписал и скомпилировал C++ код под Lua5.3)require("luacdll")
Файлы luacdll.dll и файл lua положил в папку с quik. При загрузке dll выдает ошибку
error loading module 'luacdll' fr om file '.\luacdll.lua':
.\luacdll.lua:1: too many C levels (lim it is 200) in main function near '"luacdll"'
Компилировал библиотеку на C++ под Win64 Relise в Visual Studio 2017
регистрировал внешние функции так
extern "C" LUALIB_API int luaopen_luacdll(lua_State *L) {
// эта функция выполнится в момент вызова require() в Lua-коде
// регистрируем реализованные в dll функций, чтобы они стали дуступны для Lua
#if LUA_VERSION_NUM >= 502
lua_newtable(L);
luaL_setfuncs(L, ls_lib, 0);
lua_setglobal(L, "luacdll");
#else
luaL_openlib(L, "luacdll", ls_lib, 0);
#endif
return 0;
}
Если указать в коде Lua перед загрузкой модуля dll
package.cpath = "C:\\Open_Broker_QUIK_AGromazin\\luacdll.dll"
Ничего не меняется
 
В luacdll.lua должно быть буквально следующее
Код
package.loadlib(getScriptPath() .. "\\luacdll.dll", "luaopen_luacdll")()
 
Цитата
Николай написал:
В Lua загружаю библиотеку написанную мной на C++ (я предварительно переписал и скомпилировал C++ код под Lua5.3)require("luacdll")
Файлы luacdll.dll и файл lua положил в папку с quik. При загрузке dll выдает ошибку
error loading module 'luacdll' fr om file '.\luacdll.lua':
.\luacdll.lua:1: too many C levels (lim it is 200) in main function near '"luacdll"'
Компилировал библиотеку на C++ под Win64 Relise в Visual Studio 2017
регистрировал внешние функции так
extern "C" LUALIB_API int luaopen_luacdll(lua_State *L) {
// эта функция выполнится в момент вызова require() в Lua-коде
// регистрируем реализованные в dll функций, чтобы они стали дуступны для Lua
#if LUA_VERSION_NUM >= 502
lua_newtable(L);
luaL_setfuncs(L, ls_lib, 0);
lua_setglobal(L, "luacdll");
#else
luaL_openlib(L, "luacdll", ls_lib, 0);
#endif
return 0;
}
Если указать в коде Lua перед загрузкой модуля dll
package.cpath = "C:\\Open_Broker_QUIK_AGromazin\\luacdll.dll"
Ничего не меняется
Внимательно читаем сообщение об ошибке:
too many C levels (lim it is 200) in main function near '"luacdll"'
Усе понятно?
 
Цитата
Anton написал:
package.loadlib(getScriptPath() .. "\\luacdll.dll", "luaopen_luacdll")()
На эту инструкцию ошибка attempt to call a nil value
 
Цитата
Anton написал:
package.loadlib(getScriptPath() .. "\\luacdll.dll", "luaopen_luacdll")()
На эту инструкцию ошибка attempt to call a nil value
Сорри, с путями напута. Все заработало если вместо require("luacdll") написать package.loadlib(getScriptPath() .. "\\luacdll.dll", "luaopen_luacdll")()
Спасибо
Страницы: 1
Читают тему
Наверх