Название: Бинарник и Библиотеки QT в разные папки Отправлено: phoenixyak от Июня 15, 2022, 10:51 Как разделить бинарник и библиотеки QT в разные папки?
Есть БИнарник который лежит в out/plugins и QT библиотеки которые расположен в out/QT. Добавление пути к Библиотекам QT в переменную среды PATH или перемещение их в SYSTEM 32 не лучшая идея, потому-что может вызвать проблемы с другим ПО, установленном на целевом PC. Пробовал следующий код: Код: int main(int argc, char *argv[]) Помогло с qwindows.dll в папке platforms, но DLL в папке QT также не видит. Возможно есть вариант с переопределением переменной среды PATH внутри процесса, п пробовал с qputenv и qgetenv не помогло почему-то. PS: Приложение будет состоять из многих процессов с иерархией папочек, поэтому есть необходимость явно указать, где будут лежать все DLL QT. Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: PimenS от Июня 15, 2022, 15:34 Как вариант, в папке с бинарником создаете файл qt.conf где указываете пути до библиотек.
Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: phoenixyak от Июня 17, 2022, 09:12 qt.conf рядом с exe не помогает.
Я вижу, что QLibraryInfo::location( QLibraryInfo::LibrariesPath); QLibraryInfo::location( QLibraryInfo::PluginsPath); возвращает то, что я установил в конфигурационном файле только после вызова QApplication a(argc, argv); Я так понимаю, что вызов QApplication переопределяет пути поиска, но он сам требуют подключенных DLL QT. Проблема не решена.. Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: demal от Июня 17, 2022, 09:58 Для начала необходимо понять какие dll ты собрался класть. Второе, это какая версия ОС используется. Я сталкивался в свое время, что в win7 и XP располагать dll необходимо было в разных местах. Нужно больше конкретики. А указание жестких путей это не совсем правильно...
К тому же откуда проверяешь, из под IDE или просто запускаешь? Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: phoenixyak от Июня 17, 2022, 11:06 Работаю на Windows 7.
Версия библиотек QT 5.12 Нужно указать путь откуда будут браться Qt5Core.dll и остальные dll. Собираю все в релизе. Запуская напрямую -вне QT креатора. Есть основная программа в папке out Библиотеки все и папочки скопировал с помощью QT-ной утилиты (назовем это выхлоп утилиты) 1) Если сложить весь выхлоп утилиты в папку рядом с EXE то все работает. Если переместить выхлоп в папку out/QT то ругается что не может найти Qt5Core.dll Если положить qt.conf рядом с exe с содержимым: [Paths] Libraries=QT Plugins=QT Ошибка повторится. Правильно ли я понимаю, что мне нужно переопределить только путь Libraries? ps код основного приложения такой: Код: int main(int argc, char *argv[]) Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: demal от Июня 17, 2022, 15:37 Мне кажется ты пытаешься сделать не реализуемое.
QtCore и тому подобное должно лежать рядом с exe. Ниразу не видел написанное на Qt без этих библиотек в каталоге запуска. Как можно что-то загрузить, если функция лежит в dll до которой еще добраться необходимо... Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: kambala от Июня 17, 2022, 20:30 через символические ссылки попробуй (mklink)
Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: ssoft от Июня 20, 2022, 07:44 Цитировать Как разделить бинарник и библиотеки QT в разные папки? Если нет возможности задать всё в системных путях, то лучше скрипт запуска написать, в котором всё определить. Для Windows что-то типа того Код: set MINGW_DIR=%CD%\3rdparty\mingw-7.3.0 Название: Re: Бинарник и Библиотеки QT в разные папки Отправлено: DarkHobbit от Июня 22, 2022, 11:02 Да, при тех условиях, которые хочет автор, самое простое, наверное, - это запускать всё через батничек, в который добавлять строчку с PATH перед вызовом EXE.
|