Risultati di compilazione statica di Qt5 Imansible caricare il plugin di piattaforma “windows”

Sto scrivendo un’applicazione Qt su Windows usando Visual Studio 2012 . Utilizzando il componente aggiuntivo Qt e una distribuzione statica personalizzata di Qt 5.0.2 . Sto correndo nel temuto "Failed to load platform plugin windows" ogni volta che eseguo l’applicazione. Ho aggiunto quanto segue all’input del linker:

 imm32.lib winmm.lib Ws2_32.lib qtmaind.lib Qt5Cored.lib Qt5Guid.lib Qt5Widgetsd.lib 

All’inizio ho pensato che forse dovrei aggiungere “qwindowsd.lib” anche a quella lista, ma questo non ha risolto il problema. Cosa devo fare per far funzionare la mia applicazione?

Solo per la build dynamic: assicurati di spostare qwindows.dll nella seguente directory:

 yourapp.exe Qt5Core.dll ... platforms/qwindows.dll ... 

Nota che manca la directory dei plugin! Metti tutte le cartelle necessarie da QT_BASE /…/ plugins / * direttamente insieme ai tuoi binari. BTW: Non avevo bisogno di libEGL.dll, ma la mia applicazione non ha quasi nessuna GUI.

La mia fonte: http://qt-project.org/forums/viewthread/27056/#122588

L’ho risolto. Grazie a ciò sono riuscito a far funzionare tutto. Ho aggiunto le seguenti librerie:

 opengl32.lib Qt5PlatformSupport.lib qwindows.lib 

Ho anche aggiunto quanto segue al mio codice:

 #include  Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin); 

Ho avuto lo stesso errore con la versione MinGW di Qt (non statico): “Imansible caricare le windows di plugin della piattaforma”.

La soluzione per me era aggiungere le DLL libEGL.dll e libEGLd.dll .

Un’alternativa è copiare la qtbase/plugins/platforms nelle directory Debug / Release lasciando solo qwindowsd.dll o qwindows.dll come appropriato.

Puoi anche creare una variabile di ambiente:

QT_QPA_PLATFORM_PLUGIN_PATH=\plugins\platforms

che nel mio caso diventa: QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms

Evitando così l’installazione / copia di qwindows.dll durante lo sviluppo (per risparmiare spazio su disco !?).

Questa soluzione è stata menzionata anche su GitHub e qui .

EDIT: scusa, questo non è efficace in una build statica. Ma lascerò la mia A qui.

Ok ho avuto un problema simile.

Ho scoperto che QT 5.2+ ha windeployq.exe

QT_DIRECTORY \ 5.2 … \ bin \ windeployq.exe

Usalo con la directory del tuo progetto (dove è l’exe della tua applicazione). E voilà! Collegato automaticamente tutto e pronto per la distribuzione!

Otterrà automaticamente le DLL, i plugin ecc …!

Io esattamente questo problema. La soluzione è controllare l’output Qt in Debug. Quella finestra ti dice tutte le DLL che carica. Questi sono quelli che potrebbero essere necessari nella cartella di distribuzione exe.

Le soluzioni sono, se stai usando anaconda e python per creare una GUI usando qt designer, vai ad anaconda, pkgs, qt.xxx, library, plugins, quindi copia la cartella platform nella tua cartella build che contiene il tuo programma.exe

Ho avuto lo stesso errore con VS2015 e la versione di Qt 5.9.3

Ho risolto l’errore sostituendo Qt5Cored.dll e Qt5Core.dll (dove l’exe della mia applicazione) con le stesse DLL nella directory Qt