После обновления на версию 8.0 все индикаторы и скрипты, сделанные на Lua перестали работать, по скриптам пишет ошибку "bad header in precompiled chunk".
никаких dll или сторонних библиотек не используется в скриптах. Скрипты скомпилированы через стандартную команду:
Добрый день. Для корректной работы с *.luac файлами в терминале 8.0 необходимо исходные *.lua файлы скомпилировать x64 версией Luac.exe
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Nikolay Pavlov написал: Добрый день. Для корректной работы с *.luac файлами в терминале 8.0 необходимо исходные *.lua файлы скомпилировать x64 версией Luac.exe
Т.е. для всех версий вплоть до 7.27 мне надо компилировать по старому. а для 8.0 отдельно компилировать x64 luac.exe
Очень удобно сделали и заранее предупредили главное всех о таком событии.
Скачал с сайта только что, в файле "Использование Lua на рабочем месте", ни слова нету про компиляцию.
К сожалению, повторной компиляции скриптов под x64 не избежать, это последствия смены архитектуры терминала, т.к. в нем используется уже x64 интерпретатор Lua. В документацию обязательно добавим информацию.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Nikolay Pavlov написал: К сожалению, повторной компиляции скриптов под x64 не избежать, это последствия смены архитектуры терминала, т.к. в нем используется уже x64 интерпретатор Lua. В документацию обязательно добавим информацию.
Конкретно вот этот компилятор годится для вашей новой архитектуры?:
Да, этот компилятор можно использовать (я использовал именно его). Что касается LuaForWindows, я не видел x64 сборку данного пакета, по данному вопросу могу посоветовать только обратиться к его разработчикам.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Да, этот компилятор можно использовать (я использовал именно его). Что касается LuaForWindows, я не видел x64 сборку данного пакета, по данному вопросу могу посоветовать только обратиться к его разработчикам.
Павел написал: А если мне нужно использовать собственную dll как сделать x64 ?
Добрый день. Да для x64 необходимо скачать исходники для x64. Все доступно на официальном сайте http://luabinaries.sourceforge.net/ Проверялось для сборки Lua 5.1.4 - Release 2
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Благодарю за помощь. Все получилось. Скорее всего это я уже где то что то напутал. Удалил все и начал с самого начала, все получилось.
Пишу что делал, возможно кому то пригодится: У меня Visual Studio 2013, на других версиях думаю так же, но не пробовал. 1. Создал проект и настроил его по инструкции (только файлы брал другие см.п.2, а так же см п.3) Сайт https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/ надеюсь ссылки на сторонние сайты можно размещать. 2. На сайте http://luabinaries.sourceforge.net/ выбрал "Lua 5.1.4 - Release 2 (sources and Visual C++ 8/9 binaries only)" Далее "Windows Libraries" и скачал "lua-5.1.4_Win64_vc12_lib.zip". Скаченные файлы разместил как сказано на сайте из п.1 3. В Visual Studio 2013, при настройке проекта, я изменил: Конфигурация Активная (Release) Платформа x64 (Создал через диспетчер конфигураций) 4. Код СИ скопировал для примера с того же сайта п.1 5. Проект успешно собрал, dll библиотека появилась. 6. Создал скрипт Lua, подключил через require. Запустил в QUIK 8.0.1.1 и все заработало.
Павел написал: Благодарю за помощь. Все получилось.
Рад был помочь. Еще хотел бы поправить написанное мной выше, версия 5.1.4 это не последняя версия, есть еще патч 5.1.5 (https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/ ), правильнее будет использовать его. Проверял на Visual Studio 2015 пакет lua-5.1.5_Win64_dll15_lib.zip, все работает, библиотеки собираются.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Игорь Б написал: Там несколько вариантов. Какой надо?
Смотря какой версией Visual Studio Вы будите компилировать, для 2015 я использовал lua-5.1.5_Win64_vc15_lib.zip. Выше Павел использовал 2013 версию и скачивал lua-5.1.5_Win64_vc12_lib.zip
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
никаких dll или сторонних библиотек не используется в скриптах. Скрипты скомпилированы через стандартную команду:
luac -s -o "$(FileName).luac" "$(FileNameExt)"
Что надо сделать для работы?
Visual Studio для этого не использую. Использую LuaForWindows_v5.1.4-46 Могу ли просто заменить скаченные файлы и дирректории в LuaForWindows? Если нет, то что можно сделать?
по данной ссылке выложены исходники для компиляции собственных dll, которые потом уже используются в lua скриптах.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Более не поддерживается Win XP? "Не поддерживается" = "работать вообще не будет" или "фиг знает, больше на XP не тестируем, ничего не гарантируем, не фиксим"
Никогда такого не видел. Слышал что умельцы ухитрялись заводить хр с ядром от 2003-64 сервера, но незнаю насколько это правда. Ибо кроме ядра нужен 64битный юзерспейс.
абсолютно обычная тема была для предприятий у мну сохранилась и офф iso, и ключ .. само собой есть и в сети на торрентах
людей не хотящих из ХР валить можно понять, тк валить можно только на линукс а им скилл не позволяет.
ткчт моя их понимает, но не жалеет .. (имею право)
Я Win XP ставлю через VirtualBox на Ubuntu. Кроме QUIK там нет ничего из соображений безопасности.Через WINE кривовато почему-то получалось, когда несколько лет назад я решение проблемы искал. Насколько знаю, сам QUIK до недавнего времени работал только на Windows + существовал сильно урезанный по функциональности WebQUIK.
Недавно один из брокеров (ПСБ) стал бросать в сообщения Квика, что у них также есть версии для MacOS и Android. Наверно, это новьё. А под сам Линукс, походу, Квик еще не портировали, иначе нафиг мне была бы нужна поддержка XP.
Короче, соблюдаю первый программерский принцип - "не трогай то, что работает" :) Как нашел несколько лет назад решение Ubuntu - Virtual Box - WinXP, так до сих пор заморачиваться с обновлением своих познаний не приходилось.
Ну, во-1-х поставить дров и юзерспейс не противоречит никак. во-2-х, я в линухе долго жил на 64х ядре, с 32х юзерспейсом. Сначала было РАЕ-шное ядро, потом заменил на 64. А на 64-либы переехал только тогда когда обнаружил что виртуалбокс 32хбитный не работает с 64хбитными модулями ядра.
Цитата
sergei написал: Через WINE кривовато почему-то получалось
Павел написал: Благодарю за помощь. Все получилось.
Рад был помочь. Еще хотел бы поправить написанное мной выше, версия 5.1.4 это не последняя версия, есть еще патч 5.1.5 ( https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/ ), правильнее будет использовать его. Проверял на Visual Studio 2015 пакет lua-5.1.5_Win64_dll15_lib.zip, все работает, библиотеки собираются.
У меня не получается собрать почему-то
Собираю VC Enterprise 2015
библиотеку беру lua-5.1.5_Win64_vc15_lib.zip
собираю проект release x64 : dll с многобайтовой кодировкой
при сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile. как понимаю, это имена из lua5.1.lib и дело в разрядности сборки.
s_mike@rambler.ru написал: У меня не получается собрать почему-тоСобираю VC Enterprise 2015библиотеку беру lua-5.1.5_Win64_vc15_lib.zipсобираю проект release x64 : dll с многобайтовой кодировкойпри сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile.как понимаю, это имена из lua5.1.lib и дело в разрядности сборки.
Добрый день. В итоге у Вас получилось собрать? Какую библиотеку собираете, собственную или общедоступную? Зачастую просто поменять Lua-шные исходники в проекте не достаточно, нужно проверить все линки в настройках проекта.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
s_mike@rambler.ru написал: У меня не получается собрать почему-тоСобираю VC Enterprise 2015библиотеку беру lua-5.1.5_Win64_vc15_lib.zipсобираю проект release x64 : dll с многобайтовой кодировкойпри сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile.как понимаю, это имена из lua5.1.lib и дело в разрядности сборки.
Добрый день. В итоге у Вас получилось собрать? Какую библиотеку собираете, собственную или общедоступную? Зачастую просто поменять Lua-шные исходники в проекте не достаточно, нужно проверить все линки в настройках проекта.
взял исходники Lua 5.1.5, собрал их в модели 64, проверил. Вроде нормально, работу работают.
после чего на основе получившейся .lib скомпоновал свою dll. Тоже на первый взгляд удачно. Время покажет насколько.
все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально.
s_mike@rambler.ru написал: все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально.
Возможно это особенность dll, которую Вы собираете, но гадать можно бесконечно не имея исходников. Главное, что в итоге библиотека собралась.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Очень грустно что разработчики поставили людей перед фактом. Или работай в старой но у тебя не будет ни УДС ни части другой информации или переходи в новую но вместо торговли бегай в поисках тех у кого покупал модули, которые облегчали тебе работу. Такое отношение к клиенту у Вас проходит только потому что Вы монополисты, если бы была возможность то плюнул бы на все удобства quik и ушел бы в другую систему. Вы похоже зазвездились. Жалко.
Юрий написал: Очень грустно что разработчики поставили людей перед фактом. Или работай в старой но у тебя не будет ни УДС ни части другой информации или переходи в новую но вместо торговли бегай в поисках тех у кого покупал модули, которые облегчали тебе работу. Такое отношение к клиенту у Вас проходит только потому что Вы монополисты, если бы была возможность то плюнул бы на все удобства quik и ушел бы в другую систему. Вы похоже зазвездились. Жалко.
Добрый день.
Это вопрос расстановки приоритетов в условиях ограниченного ресурса: можно тратить время и силы на производство, тестирование, документирование и сопровождение двух параллельных платформ, но в таком случае ресурса на дальнейшее развитие терминала (в том числе и реализацию многочисленных пожеланий пользователей) не останется. В таких условиях выбор приоритетов был очевиден. В то же время мы, конечно, понимаем те затруднения, с которыми столкнулись пользователи нашего продукта, и со своей стороны прикладываем все усилия для того, чтобы помочь их разрешить.
С квиком 7семеркой брокер обнуляет безопасность. Ну нормально, 10 процентов выкинули с рынка. когда итак торговать некому. все ушли играть в футбол. Вообще ребята, нечего тратить время на квик, особенно по построению заморочек к нему, только настроишь и тут же все неимоверные сизифовы труды обнулят по соображениям , как там выше, ресууурса..
s_mike@rambler.ru написал: взял исходники Lua 5.1.5, собрал их в модели 64, проверил. Вроде нормально, работу работают.
после чего на основе получившейся .lib скомпоновал свою dll. Тоже на первый взгляд удачно. Время покажет насколько.
все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально.
алгоритм другой должен быть, либина вообще-то по уму должна быть от квиковской lua, а не от общедоступной. они немного отличаются.
алгоритм: 1. получаем список функций экспорта библиотеки, где lua5.1.dll - библиотека из поставки quik 8.0 dumpbin.exe /EXPORTS lua5.1.dll > lua5.1.exports
2. форматируем файлик .exports, оставляя только имена функций и добавляя сверху одно слово EXPORTS, пример EXPORTS is_proxy_dll luaA_pushobject luaC_barrierback ...
закинул хедеры от исходников и из луабинов 5.1.5 в созданную папку с проектом, повторил все шаги, на этапе сборки система ругается, см.скриншот, я так понимаю потому что исходник lfs.c - это С а не С++, но в msvc я не вижу нигде возможности задать чтобы исходники были С, только С++ или C#, Причем на mingw (32-ух битном я компилил эту библиотечку вообще без проблем, так что ошибок никаких там в коде быть не может) решил поэтому попробовать на Mingw-w64, скачал установил, скачал под мингв64 и луабинарии - https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/lua-5.1.5_Win64_...
распаковал, раскидал всё по нужным папкам в мингв64, путь к исполняемым файлам мингв64 в винде в системных переменных установил в path - c:\mingw64\bin захожу в папку с распакованными исходниками lfs, где lfs.c лежит и выполняю -
x86_64-w64-mingw32-gcc-4.8.3 lfs.c -o lfs.dll В итоге вываливается -
Код
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x15): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3a): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x68): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x81): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc5): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf0): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x111): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13d): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x152): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1dc): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x250): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x277): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x2ee): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x394): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3cb): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3e9): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x479): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x495): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4ad): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4ce): undefined reference to `lua_newuserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4f2): undefined reference to `lua_getfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x500): undefined reference to `lua_setmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x52c): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x59b): undefined reference to `luaL_checkoption'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x5ed): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x636): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x667): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x6f5): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x70d): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x724): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x76a): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x77a): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x79f): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x7e3): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x7fa): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x83f): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x84f): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x874): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x8d5): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x920): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x97a): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x9a6): undefined reference to `luaL_argerror'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x9fe): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xa1f): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xa4d): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xab2): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xada): undefined reference to `lua_touserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb3e): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb58): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb66): undefined reference to `lua_newuserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb7f): undefined reference to `lua_getfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb8d): undefined reference to `lua_setmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xbce): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc15): undefined reference to `luaL_newmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc29): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc3f): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc54): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc6a): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc7f): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc94): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcaa): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcbf): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xce6): undefined reference to `luaL_newmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcfa): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd10): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd25): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd3a): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd50): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd65): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe20): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe2d): undefined reference to `lua_gettop'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe4e): undefined reference to `luaL_optnumber'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe6c): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xecd): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xef8): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf26): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf55): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf84): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xfb3): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xfdf): more undefined references to `lua_pushinteger' follow
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1163): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x118e): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11ad): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11d9): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11f2): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x120a): undefined reference to `lua_isstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1226): undefined reference to `lua_tolstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12bd): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12d0): undefined reference to `lua_settop'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12de): undefined reference to `lua_type'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12f7): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1323): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1353): undefined reference to `lua_rawset'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13e3): undefined reference to `lua_isstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13fb): undefined reference to `lua_tolstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1463): undefined reference to `lua_type'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x148f): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14ba): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14cf): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14e5): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14fa): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1510): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1525): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x155e): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1573): undefined reference to `luaL_register'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1581): undefined reference to `lua_pushvalue'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1596): undefined reference to `lua_setfield'
c:/mingw64/bin/. ./lib64/gcc/x86_64-w64-mingw32/4.8.3/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o: bad reloc address 0x0 in section `.data'
collect2.exe: error: ld returned 1 exit status
Это функции из интерпретатора луа, который в квике зовется как qlua.dll т.е. в хедерах которые подключаются в lfs.c идет подключение к интерпретатору и запрашиваются его функции но компилятор нигде не может увидеть lua.dll (еще непонятно под каким названием он её ищет - lua51.dll или lua5.1.dll или lua.dll или еще как то?)
я уже куда только под какими только названиями ни пробовал qlua.dll закидывать в папки c:\mingw64\.. во все папки закидывал, в папку с компилируемыми исходниками закидывал, нигде не видит подключение к dll идёт как я вижу в luaconf.h, вот эти строчки:
Код
*/
#if defined(_WIN32)
/*
** In Windows, any exclamation mark ('!') in the path is replaced by the
** path of the directory of the executable file of the current process.
*/
#define LUA_LDIR "!\\lua\\"
#define LUA_CDIR "!\\"
#define LUA_PATH_DEFAULT \
".\\?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua"
#define LUA_CPATH_DEFAULT \
".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll;" \
LUA_CDIR"clibs\\?.dll;" LUA_CDIR"clibs\\loadall.dll;" \
".\\?51.dll;" LUA_CDIR"?51.dll;" LUA_CDIR"clibs\\?51.dll"
#else
#define LUA_ROOT "/usr/local/"
#define LUA_LDIR LUA_ROOT "share/lua/5.1/"
#define LUA_CDIR LUA_ROOT "lib/lua/5.1/"
#define LUA_PATH_DEFAULT \
"./?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua"
#define LUA_CPATH_DEFAULT \
"./?.so;" LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" \
"./lib?51.so;" LUA_CDIR"lib?51.so"
#endif
1. Чтобы студия компилировала как си без плюсов, надо расширение сделать .c, а не .cpp, либо кликнуть по файлу в дереве проекта правой кнопкой, открыть настройки файла и поставить ему "компилировать как си". Либо всему проекту поставить. Хотя, возможно, в мс-новоделии уже и нельзя это все, тут не в курсе.
2. Ваша qlua.dll, куда вы ее ни кладите, компилятору не нужна, он ее, как того Джо, не находит, потому что и не ищет. Даже линкеру она не нужна, ему нужна qlua.lib, как ее вытащить из qlua.dll тут где-то тема была.
3. Ошибки в студии (глядя по скрину) говорят о следующем: а) исходный код является говнокодом (E0144, C2440, C2664) даже с точки зрения сей без плюсов; б) в проекте стоит char type = UNICODE, а должен быть MULTIBYTE (E0167); в) аффтар не рассчитывал на винду (C4996); г) аффтар не рассчитывал на 64 бита (C4267). И это только что видно на скрине.
Если есть возможность, делегируйте компиляцию кому-нибудь. С помощью зала, конечно, что-нибудь в итоге накомпилируется, но что именно это будет - уже вопрос.
Anton написал: 1. Чтобы студия компилировала как си без плюсов, надо расширение сделать .c, а не .cpp, либо кликнуть по файлу в дереве проекта правой кнопкой, открыть настройки файла и поставить ему "компилировать как си".
Выставил непомогло,
Цитата
Anton написал: Ваша qlua.dll, куда вы ее ни кладите, компилятору не нужна, он ее, как того Джо, не находит, потому что и не ищет. Даже линкеру она не нужна, ему нужна qlua.lib, как ее вытащить из qlua.dll тут где-то тема была.
Тем более вытаскивать ничего ненадо, в луабинариях с сорсефоржа https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/, которые для мингв64 есть либа - liblua5.1.a , это она ведь нужна? я её закидывал в папку для либ мингв64 - c:\mingw64\x86_64-w64-mingw32\lib\ поскольку мингв64 - это не один компилятор а целый набор, а компилирую я с помощью x86_64-w64-mingw32-gcc.exe - и он ищет 64х битные либы именно по тому пути, пробовал также туда закидывать и либу lua5.1.lib, которая в луабинариях64 для msvc - все равно один и тот же результат - валятся те ошибки что сверху, скрины из MSVC studio 2019 прилагаю
Цитата
Anton написал: а) исходный код является говнокодом (E0144, C2440, C2664)
Не является, т.к. 32-х битный mingw компилит эту библиотечку lfs.c в lfs.dll без каких либо проблем, и так же без каких либо проблем её функции потом из луа скрипта работают
Цитата
Anton написал: в проекте стоит char type = UNICODE, а должен быть MULTIBYTE