Требования к приложениям Qt и Qt

Я новичок в Qt, и я работаю в Windows 7.

Когда я пытаюсь запустить свое приложение напрямую, я вижу ошибку об отсутствии некоторых библиотек DLL. Я пытался их исправить, но не смог (пробовал строить статически).

Есть ли правильное решение?

Мой вопрос:

Если я хочу запустить свое приложение Qt на других компьютерах, что мне нужно? Например, для приложения .NET нам нужно установить .NET framework на целевой компьютер, но как насчет Qt?

Я искал его SDK и нашел SDK размером около 1,6 ГБ! Означает ли это, что каждый раз, когда я хочу установить свое приложение, я должен устанавливать SDK размером 1,6 ГБ? Это очень плохо.

Спасибо.


person Ali Foroughi    schedule 05.12.2011    source источник


Ответы (4)


Вы должны распространять свое приложение с необходимыми библиотеками. Если ваше приложение работает в Windows, вы можете следовать этому руководству: Развертывание Приложение для Windows. Вы можете найти необходимые библиотеки в виде dll в каталоге bin внутри SDK. Базовому графическому приложению Qt требуется как минимум QTCORE4.DLL, QTGUI4.DLL и, если вы используете Qt Creator, MINGWM10.DLL. Вы можете оставить эти библиотеки в том же каталоге, что и ваше приложение.

person Alessandro Pezzato    schedule 05.12.2011
comment
я нашел эти файлы и поместил их в тот же каталог, что и исполняемый файл моего приложения, но произошла ошибка - person Ali Foroughi; 06.12.2011
comment
какая ошибка? добавление этих файлов что-то изменило? Возможно, вы используете другие модули (сеть, xml...) или плагины для изображений (png, jpeg...) - person Alessandro Pezzato; 06.12.2011
comment
ааааа нет, просто очень простое приложение, но я добавляю путь к bin в свою переменную окружения path, и все идет как надо ;-) - person Ali Foroughi; 06.12.2011
comment
добавление пути к bin в переменную среды PATH не заставит ваше приложение работать на других компьютерах - person Alessandro Pezzato; 06.12.2011
comment
точно. это меня еще беспокоит. но справиться с ddls не решило мою проблему. что я могу сделать? - person Ali Foroughi; 06.12.2011
comment
Удалите qt из переменной окружения и постепенно добавляйте необходимые библиотеки. В чем ошибка? - person Alessandro Pezzato; 06.12.2011
comment
давайте продолжим это обсуждение в чате - person Alessandro Pezzato; 06.12.2011

Вы не можете статически связываться с Qt, если вы не создали библиотеки в этой конфигурации (чего вы не сделаете, если вы только что загрузили предварительно собранный SDK). Имейте в виду, что если вы хотите создать статическую компоновку, для некоторых компонентов существуют последствия лицензирования.

Если вы создали конфигурацию релиза, вам потребуются как минимум библиотеки, упомянутые Алессандро, QtCore4.dll и QtGui4.dll. В зависимости от других частей библиотеки, которую вы используете, вам также может понадобиться QtXml4.dll, QtWebkit4.dll, QtXmlPatterns4.dll и, возможно, Phonon.dll. Убедитесь, что вы создаете конфигурацию выпуска, а не конфигурацию отладки, так как она не будет работать, так как ей требуются среды выполнения отладки Visual Studio, которые вы не можете распространять повторно. Если вы сомневаетесь, какие dll вам нужны, используйте DependencyWalker, чтобы выяснить это (обратите внимание, что это не показывает Phonon.dll). так как он загружается позже).

Как правило, вам понадобится всего около 4-6 dll, вам не понадобится весь SDK.

person the_mandrill    schedule 05.12.2011

Учтите, что многие приложения используют Qt, и у вас есть реальный шанс, что библиотеки DLL уже установлены. В любом случае, остерегайтесь зависимостей MSVC: у нас был настоящий кошмар при развертывании приложений на каком-то сервере, частично связанный с переключением политики с VS2005 на VS2008. Алессандро уже предоставил хороший ресурс: см. также этот предыдущий пост.

person CapelliC    schedule 05.12.2011
comment
Если они установлены, они будут приватными в программе, которая их установила, в их установочной папке, поэтому вы не можете полагаться на это и все равно должны их отправлять. - person Frank Osterfeld; 06.12.2011

Если вы работаете с Qt5, помимо .dll, упомянутых в первом ответе, вы также должны добавить папку platform/ из каталога bin внутри SDK.

person dvsaura    schedule 11.09.2013