Я пытаюсь перевести dll на x64 lua5.3 vs15
Действую по инструкции
https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/
Перечитал все комменты, всё испробовал, но так и не решил.
Библиотеку lua я скачал, всё заменил, но не заводится она.
Т.е. я просто меняю библиотеки с 5.1 на 5.3, прописываю новую lua53.lib но всё-время вылазят ошибки:
C2079 «ls_lib» использует неопределенный struct «ls_lib»
C2078 слишком много инициализаторов
C2664 «void luaL_setfuncs(lua_State *,const luaL_Reg *,int)»: невозможно преобразовать аргумент 2 из «luaL_reg []» в «const luaL_Reg *»
Из-за чего так?
Скачивал проект LuaProba (https://smart-lab.ru/blog/605815.php), но он был для 5.1
Опять же, в нём библиотеки поменяю — и опять эти же ошибки вылазят.
//=== Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua ================================//
static struct luaL_reg ls_lib[] = {
{ "TestFunc", forLua_TestFunc }, // из скрипта Lua эту функцию можно будет вызывать так: QluaCSharpConnector.TestFunc(); здесь можно указать любое другое название
{ NULL, NULL }
};
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
//extern "C" LUALIB_API int luaopen_connector(lua_State *L) {
// luaL_openlibs(L, "connector", ls_lib, 0);
// return 0;
//}
extern "C" LUALIB_API int luaopen_connector(lua_State *L) {
lua_newtable(L);
luaL_setfuncs(L, ls_lib, 0);
lua_pushvalue(L, -1);
lua_setglobal(L, "connector");
return 0;
}
Как жить?
static struct luaL_Reg ls_lib[] = { {NULL, NULL}};
extern «C» LUALIB_API int luaopen_connector(lua_State *L)
{
lua_newtable(L);
luaL_setfuncs(L, ls_lib, 0);
lua_setglobal(L, «connector»);
lua_pushcclosure(L, forLua_TestFunc, 0); //Добавляет функцию в стек
lua_setglobal(L, «TestFunc»); //Регистрирует её в QLua
return 0;
}
Ну и не забудьте волшебные слова:
#define LUA_LIB
#define LUA_BUILD_AS_DLL
// заголовочные файлы LUA из дистрибутива LUA
extern «C» {
#include "../Lua53/include/lauxlib.h"
#include "../Lua53/include/lua.h"
}
там изменена большая буква на маленькую или наоборот. luaL_Reg по-моему. Обратите внимание.
По остальным ошибкам не знаю, давно делал уже. Если хотите, можете посмотреть на примере моих библиотек.
Вот готовая болванка проекта dll-библиотеки Lua для QUIK любой версии
github.com/swerg/simple-lua-c-dll
Пользуйтесь на здоровье!