Виктор Некрасов
Виктор Некрасов личный блог
16 сентября 2020, 12:42

Проблема перевода dll на lua 5.3 x64 vs15 (уже всё попробовал)

Я пытаюсь перевести 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;
}

Как жить?
4 Комментария
  • Karim
    16 сентября 2020, 15:07
    Жить просто!

    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"
    }

  • П М
    16 сентября 2020, 15:12
    поменяй на static const luaL_Reg ls_lib
  • Kot_Begemot
    16 сентября 2020, 18:00
    C2079 «ls_lib» использует неопределенный struct «ls_lib»

    там изменена большая буква на маленькую или наоборот. luaL_Reg по-моему. Обратите внимание.

    По остальным ошибкам не знаю, давно делал уже. Если хотите, можете посмотреть на примере моих библиотек
  • swerg
    24 октября 2020, 12:54
    Странным вы ресурсом пользуетесь, признаться, для получения сведений.
    Вот готовая болванка проекта dll-библиотеки Lua для QUIK любой версии
    github.com/swerg/simple-lua-c-dll

    Пользуйтесь на здоровье!

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн