Не удалось загрузить плагин платформы "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 загрузки)