Как запустить приложения Qt 5 на других компьютерах (Windows 7)
Я разработал простое приложение с Qt 5.0.2 на Windows 7 Ultimate. В качестве компилятора QtCreator использовал MSVC2012_64bit. И я не могу перенести приложение на другой компьютер. Это не работает. Для приложения Qt требуются DLL, которые я не могу найти. Исследователь зависимостей считает, что .dll
ниже не найден. Где я могу их найти? Почему эта проблема настолько распространена? Все люди жалуются, что не могут получить свой .exe
, который разработан с помощью Qt, работать на другом компьютере.
![enter image description here]()
EDIT1: Кстати, когда я добавил DCOMP.dll
, загруженный из Интернета, не найденные DLL становятся в 2-3 раза больше, чем сейчас:)
EDIT2: Также обратите внимание, что на другом компьютере (Windows 7 Home Premium), когда я дважды нажимаю на exe файл, он показывает, что он загружается и не действует, никакой ошибки вообще нет.
Ответы
Ответ 1
Это список DLL, который мне нужен, а также я скопировал папку C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platforms
:
![enter image description here]()
Только это, и это сработало для меня. BTW Я использую Windows 7 Ultimate 64x и Qt 5.0.2 для Windows 32-разрядный (MinGW 4.7, 650 МБ) пакет для Qt.
EDIT: вам может потребоваться скопировать файл QtCreator.dll, а также вам может потребоваться файл с именем qt.conf
со следующим содержимым (скопировано из ответа @Renato):
[Paths]
Libraries=./platforms
Ответ 2
просто добавьте файл qt.conf
в свой каталог приложений со следующим содержимым
[Paths]
Libraries=./platforms
затем скопируйте в тот же каталог приложений поддиректор "платформы", который вы найдете в каталоге C:\Qt\Qt5.1.1\Tools\QtCreator\bin
Это все.
Это решает, потому что qtcore.dll скомпилирован с внутренними путями вашей установки qt. (Я не знаю, что вы!). Поскольку qt.conf всегда читается qtcore, когда приложение запускает библиотеки в "платформах", будет включено, и приложение работает вообще на любом хосте.
Предупреждение: подкатегория qtcore и платформ должна стать из той же установки qt.
Извините, но решение работает нормально.
Ответ 3
Qt в наши дни (по крайней мере, Qt 5.2, если не раньше) поставляется с "windeployqt.exe", который при указании на вашу скомпилированную программу (и, если вы меня используете, в качестве дополнительного аргумента "--qmldir path/to/QML/files" для программы Qt Quick) должен выплевывать все необходимые библиотеки DLL в тот же каталог, в котором находится ваша скомпилированная программа. Например, для себя на локальной машине сборки я запускал что-то по строкам:
windeployqt --qmldir C:\Code\AppSource C:\Code\build-msvc2010\release
Это с каталогом Qt\bin в моей $PATH (или, я полагаю, в языке Windows,% PATH%;)) с использованием Qt 5.5, хотя я тоже сделал то же самое с 5.2 и 5.3.
IIRC, если я использую MSVC в качестве компилятора, мне все еще нужно было копировать эти DLL (в моем случае, msvc2010, so msvcp100.dll и msvcr100.dll) вручную, но я мог вспомнить неправильно.
Ответ 4
Спасибо за помощь!
Для меня просто добавление qwindows.dll
в каталог /platforms
так или иначе не разрезало его.
Я, наконец, получил все, чтобы работать, грубо копируя весь каталог плагинов в двоичный каталог приложения и создавая файл qt.conf
со следующим содержимым:
[Paths]
Plugins=./plugins