Блог им. 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
993 | ★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

Читайте на SMART-LAB:
Фото
BRENT: Война или сделка? Как ликвидация аятоллы изменит цену «черного золота»
«Черное золото» в эти выходные стало эпицентром глобального шторма. Совместная операция США и Израиля привела к ликвидации высшего руководства...
Фото
Транснефть: идея сработала, каждый мог заработать +20% с минимальным риском
В октябре писал пост  Транснефть: защитный актив с 15% див доходностью, но рисками заморозки тарифов Акции стоили 1200 рублей и были...
Фото
Мальчик. Третий по счёту. + 2.7% к счастью.
Кстати, сын у меня тут родился. Неделю назад)     Я бы мог поделиться секретом со СмартЛабом, как делать только мальчиков. Но это Вам не...
Оперативная заметка с полей облигационной конференции для клиентов Mozgovik Research
Доброго дня, уважаемые читатели Mozgovik Research. Для вас хотел коротко и оперативно поделиться основными идеями, которые успел услышать на...

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

....все тэги



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