Как запустить приложения 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