Не удалось загрузить плагин платформы "windows". Доступные платформы: Ошибка

Я создал проект Qt, используя 32-битную Visual Studio 2012 и Qt5 SDK с помощью дополнения Visual studio Qt. Я использую ОС Windows 7 Ultimate.

Я создал QApplication GUI Project, который в основном использует следующие библиотеки:

qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Network.lib
Ws2_32.lib
Winhttp.lib
Winmm.lib
Qt5Widgets.lib
Qt5PlatformSupport.lib
imm32.lib

И мне удалось построить двоичный файл приложения без каких-либо ошибок.

Я пытаюсь запустить это приложение на тестовом компьютере с Windows 7, скопировав туда следующие библиотеки:

icudt51.dll
icuin51.dll
icuuc51.dll
libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Network.dll
Qt5GUI.dll
Qt5Widgets.dll
qwindows.dll [copied from msvc2012\plugins\platform folder ]

Я получаю ошибку:

Не удалось загрузить плагин платформы "windows". Доступные платформы: при попытке запустить приложение.

Что бы я пропустил? Как заставить его работать на платформе Windows? Пожалуйста, помогите мне решить эту проблему.

Я перешел по ссылкам, опубликованным об этой проблеме ранее. но ни одна из них не решила мою проблему. В какой конфигурации мне не хватает?

4 ответа

Решение

Dll плагина платформы нужно будет поместить в подпапку платформы, и тогда он будет работать.

Еще одно решение: в начале вашей основной функции или чего-то еще, вызовите QCoreApplication::addLibraryPath(). Простой пример:

std::ifstream configurationStream("whateverNameYouWant.conf");
std::stringstream configurationText;
configurationText << configurationStream.rdbuf();
auto ct = configurationText.str();

if (!ct.empty())
    QCoreApplication::addLibraryPath(QString::fromStdString(ct));

Здесь я загружаю путь из файла.conf моего собственного изобретения, чтобы путь не был жестко запрограммирован в моей программе. Поскольку я изобрел этот файл, я контролирую его формат; в этом случае он не содержит ничего, кроме пути. Фактический путь, который я использую, C:/qt5/qtbase/plugins; этот каталог содержит platforms/qwindows.dll и другие подобные файлы. Можно настроить пути для собственного случая в соответствии с тем, где установлены файлы Qt.

Я предполагаю, что также возможно использовать стандарт qt.conf файл в формате, заданном Qt, для автоматической загрузки некоторых специальных путей (включая этот путь плагинов) без необходимости добавлять специальный код в вашу собственную программу для этой цели: http://doc.qt.io/qt-5/qt-conf.html... Но мне так и не удалось заставить это работать по какой-либо причине. Может быть, я делаю простую ошибку, я не знаю.

Если вы укажете рабочий каталог, отличный от того, в котором находится ваш исполняемый файл, то, независимо от наличия плагинов, он потерпит неудачу.

Итак, в этом случае скопируйте ваш файл с событием после сборки.

И в:

Свойства конфигурации-> Отладка-> Команда

укажите полный путь к исполняемому файлу.

Это было проверено на VStudio 2008.

Другим решением является добавление аргументов в объект QApplication (или в стартовое приложение). Например, если вы хотите загрузить qwindow.dll из C:\test\platform.dll, вы можете создать экземпляр объекта QApplication с помощью следующего кода:

int ac = 4;
static char * av[] = {"myappli.exe","C:\\\\path\\to\\myappli.exe","-platformpluginpath","C:\\\\test"};
m_qApp = new QApplication(ac, av);

Будьте осторожны, DLL QTCore не может находиться в каталоге C:\test (конфликт DLL загрузки)

Другие вопросы по тегам