Блог им. 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
988 | ★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:
Фото
Кто покупает золото и когда оно закончится в недрах Земли
Доля промышленности в совокупном спросе на золото всего 6% — в этом его основное отличие от других сырьевых товаров. Большая часть остального...
Фото
📅 Как начался новый инвестиционный год
В январе наши клиенты перекладывали часть средств в облигации — это говорит о сохранении консервативного тренда и желании получать...
Фото
🌍 Техподдержка мирового уровня от SOFL: большой проект для «Лаборатории Касперского»
Друзья, в этом посте делимся подробностями по крупному сервисному проекту с международной ИБ-компанией. Аутсорсинг центр «Софтлайн Коннект»...
Фото
РУСАГРО: выкупить акции и спасти Мошковича - могут ли акции вырасти на 100% от текущих ценах, подробный разбор 
Начинаем покрытие компании РУСАГРО этим постом, надеюсь удастся под микроскопом разглядеть инвестиционную привлекательность или хотя бы сделать...

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

....все тэги



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