Блог им. 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
986 | ★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:
Фото
Газ без магии: ключевые мысли Давида Абельмана с эфира
Давид Абельман, эксперт нефтегазового рынка, поделился своим взглядом на ценообразование природного газа. Его фокус – американский природный газ,...
Обновление кредитных рейтингов в ВДО и розничных облигациях (АО «Нэппи Клаб» понижен до ruC)
🔴АО «Нэппи Клаб» Эксперт РА понизило рейтинг кредитоспособности до уровня ruC, прогноз по рейтингу развивающийся. По рейтингу установлен...
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

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

....все тэги



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