Блог им. 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
999 | ★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:
Фото
AUD/JPY: Медвежье эхо у линии тренда
Кросс-курс AUD/JPY провел прошлую неделю в узком диапазоне. Пара тестировала серией свечных доджи пробитую линию поддержки восходящего канала...
Фото
Акция МГКЛ: дарим 100 акций
Если вы ещё не участвовали — сейчас самое время. Условия участия: — купить от 100 акций $MGKL в период до 30 апреля — написать пост в...
Фото
Средние доходности облигаций в зависимости от кредитного рейтинга. От B- до AA+
👉 Наш канал в MAX 👈 👉 Чат Иволги в MAX 👈 Средние доходности облигаций в зависимости от рейтинга (бледные столбцы...
Фото
Русснефть: полицейский разворот прибыли в нефтянке - все видно в 1-м квартале по РСБУ
Русснефть — не самый интересный актив на просторах российского нефтегаза. Мутный мажоритарий, не платит дивиденды, но многих привлекает график, где...

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

....все тэги



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