Не удалось запустить приложение Qt, так как не удалось найти каталог плагина "windows"
Я знаю, что есть несколько ответов, касающихся этой проблемы с Qt (например, Qt 5.1.1: Приложение не удалось запустить из-за отсутствия "окон" плагина платформы). Я использую Qt 5, но, похоже, эта проблема есть и в других версиях.
Принятый ответ не был моей проблемой, но, следуя ссылкам, решение для копирования каталога платформ в исполняемый файл работает нормально. Однако я нахожу это решение довольно неудовлетворительным, потому что это означает, что я должен распространять этот же каталог повсюду. В проекте мне нужно скопировать его в ветки Debug/Release для КАЖДОГО И КАЖДОГО проекта, который я создаю. Бег designer.exe
У меня также есть эта проблема, поэтому я должен скопировать ее туда, и так далее.
Помещение каталога плагинов из моего каталога установки QT в PATH не решило проблему, хотя я не совсем понимаю, почему. Очевидно, есть некоторый пользовательский код, загружающий необходимые библиотеки плагинов.
Поэтому мне интересно, нет ли какого-либо приемлемого способа сделать это правильно, например, установить переменную QT_HOME или аналогичную, чтобы мне не приходилось копировать библиотеки DLL повсеместно.
2 ответа
Это плохая идея, чтобы собрать Qt самостоятельно, и в этом случае даже не стоит иметь статическую сборку. У вас есть несколько способов решить эту проблему:
Из документации:
All Qt programs automatically support the following command line options:
\list
\li \c{-platform} \e {platformName[:options]}, specifies the
\l{Qt Platform Abstraction} (QPA) plugin.
Overridden by the \c QT_QPA_PLATFORM environment variable.
\li \c{-platformpluginpath} \e path, specifies the path to platform
plugins.
Overridden by the \c QT_QPA_PLATFORM_PLUGIN_PATH environment
variable.
а также
void QCoreApplication::addLibraryPath(const QString & path) [статические]
Предопределяет путь к началу списка путей к библиотекам, гарантируя, что сначала выполняется поиск библиотек. Если путь пуст или уже находится в списке путей, список путей не изменяется.
Список путей по умолчанию состоит из одной записи - каталога установки плагинов. Каталог установки по умолчанию для плагинов - это INSTALL/plugins, где INSTALL - это каталог, в который был установлен Qt.
Смотрите также removeLibraryPath(), libraryPaths() и setLibraryPaths().
В зависимости от вашего точного желания, это может быть решено так или иначе.
Попробуйте использовать QCoreApplication::addLibraryPath(PATH TO PLUGIN FOLDER).