Блог им. SAMOKILLER

Проблема перевода 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;
}

Как жить?
  • обсудить на форуме:
  • Quik Lua
★3
4 комментария
Жить просто!

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

avatar
поменяй на static const luaL_Reg ls_lib
avatar
C2079 «ls_lib» использует неопределенный struct «ls_lib»

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

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

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

теги блога Виктор Некрасов

....все тэги



UPDONW
Новый дизайн