Каталог установки Qt не должен находиться в вашей среде PATH. Тогда переименование Qt dir не требуется (в отличие от OSX). Во время разработки вы можете запускать свое приложение из Qt Creator.
Если вы запустите приложение вне Qt Creator, например, дважды щелкнув по нему в проводнике, Windows также автоматически включит в свой путь поиска приложение dir, и на самом деле это первое место, где он будет выглядеть. Если он не может найти там DLL, или если это неправильная версия (например, 32/64 бит), она попытается найти ее где-то в другом месте. Нет необходимости устанавливать или загружать пути библиотеки. Используйте хост зависимостей, чтобы узнать, какие DLL вам нужны. Скопируйте их из дистрибутива Qt Install или извлеките их из EXC-версии Microsoft vc-redistributable в случае необходимости dll msvc (я думаю, что вам не хватает dll msvcr). Все это копирование dll должно быть выполнено с помощью скрипта qmake. Какой плагин Qt dll нужен вашему приложению, это вопрос проб и ошибок. Для некоторых отсутствующих плагинов dll ОС выдает предупреждение при запуске приложения.
Вы можете следовать совету Пим, используя windeployqt
. Мы предпочитаем контролировать себя, какие DLL будут развернуты.
Ваше местонахождение платформ плагинов qwindows.dll
является абсолютно правильным. Приложение не загружает dll плагина, но загружает dll dll плагинов dll, и эти Qt dll знают точно, где их ожидать и найти. Единственная причина, по которой я могу представить, что у вас проблемы, заключается в том, что ваше приложение загружает неправильную dll Qt и что dll не может найти dll-платформы. Не забывайте, что многие другие многоплатформенные приложения также используют Qt. Они могли бы сбрасывать Qt dll в каталоге system32, иначе они могли бы выставить их, добавив их в каталог PATH. Добро пожаловать в ад.
Существует простой подход к борьбе с dll hell: удалите (и восстановите) из своего приложения dir dll по одному и каждый раз дважды щелкните свое приложение. Если Windows не жалуется на отсутствие именно этой DLL, вы просто удалили, что dll не была правильной версией. Если это все равно не поможет, вы, вероятно, пропустили другую Qt-dll, используемую вашим приложением.
Ваше приложение будет выглядеть в своей папке, прежде чем затем искать в другом месте, если он не был найден. Попробуйте переместить его из папки платформ в папку приложения. –