2014-08-27 18 views
5

Ho creato un'applicazione utilizzando Qt v5.3.1 con MinGW v4.8.2 su windows 7 32bit.
Ho il seguente errore quando aperto la mia domanda:Impossibile avviare questa applicazione perché non è riuscito a trovare o caricare il messaggio di errore "windows" del plugin della piattaforma Qt

ho inclusione tutti i file importanti per eseguire la mia applicazione utilizzando windeployqt.exe strumento.

anche la cartella platforms contiene:

Anche io ho l'inclusione di tutti i file importanti per eseguire la mia applicazione manualmente senza l'uso windeployqt.exe strumento, e il problema esiste ancora.

Non so come risolvere questo problema.


Modifica

Il il risultato dell'utilizzo di Dependency Walker strumento.

Sono ancora non sanno come ottenere questi file dll question mark.

+0

Il supporto per Windows di Qt dipende da numerose DLL. Sfortunatamente, non ricordo dove ho trovato la lista. Utilizzando [Dependency Walker] (http://www.dependencywalker.com/) per visualizzare le dipendenze DLL o utilizzando [Process Monitor] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) per vedere potrebbe non essere di aiuto il caricamento delle richieste. –

+0

Questa guida è ideale per dettagliare i problemi di distribuzione: http://www.tripleboot.org/?p=138. E in secondo luogo utilizzo Dependency Walker, o ancora meglio Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) –

+0

@JoshKelley: Ho usato lo strumento 'Dipendenza Walker ', per favore vedere di nuovo la mia domanda. @AndrewDolby: per favore vedi di nuovo la mia domanda. –

risposta

2

Innanzitutto, grazie a tutti per aver contribuito alla comprensione del problema e a come risolverlo.

Ora, per risolvere questo problema è necessario leggere attentamente questo articolo, per capire prima qual è il problema e quindi come risolverlo. [Deploying a real Qt app – understanding more of Qt]

La conclusione In breve:
il motivo del problema è the path of the plugins that you used in your project.
Il percorso predefinito per i plug-in utilizzati nel progetto è qt path folder, ma quando l'ambiente di sviluppo qt non è installato sul computer, l'applicazione non verrà eseguita, poiché il valore predefinito path to plugins è diretto a qt path folder e questo è il problema.
Abbiamo bisogno di indirizzare/modificare il percorso dei plugin nella cartella dell'applicazione.

Esistono diversi modi per indirizzare/modificare il percorso. Citerò il modo in cui ho già provato e sono riuscito a risolvere il problema

C'è un metodo statico chiamato addLibraryPath(const QString & path), questo metodo Lo useremo per dirigere/modificare the plugins path.

Esempio:

int main(int argc, char *argv[]) 
{ 
    QApplication::addLibraryPath("pluginsFolder"); 
    QApplication a(argc, argv); 
    Widget w; 
    w.show(); 


    return a.exec(); 
} 

pluginsFolder è la cartella che contiene tutti i plugin che hai usato nel progetto.

È inoltre possibile modificare

QApplication::addLibraryPath("pluginsFolder"); 

Per

QApplication::addLibraryPath("."); 

Ciò significa che i plugin nella cartella principale non in sottodirectory denominata plugins.
E non dimenticare di usare lo strumento windeployqt.exe per distribuire il tuo progetto.

E infine, spero che questa breve spiegazione sia utile per chi segue me, che dovrà affrontare lo stesso problema.

+0

stai usando "pluginsFolder" o semplicemente "plug-in"? e all'interno di pluginsfolder hai ad esempio "platform, sqldrivers, ..." cartelle? – user1767754

+0

@ user1767754: 'pluginsFolder' indica il nome della cartella che raccoglie tutti i plugin (sqldrivers, piattaforme, ecc.) Al suo interno, che nella cartella dell'applicazione. –

+0

QApplicazione: addLibraryPath ("E:/plugins /"); non ha aiutato anche se ho le piattaforme, sqldrivers all'interno di questa cartella – user1767754

1

Provare ad aggiungere libEGL.dll, libGLESv2.dll e D3DCompiler_43.dll a livello di directory con QtApplication.exe. È probabile che qwindows.dll li abbia come dipendenza e di conseguenza si ottenga un errore non presidiato. Puoi capire se ti serviranno quelli che si trovano nel tuo Qt-Dir/bin. In caso contrario, l'apertura di qwindows.dll in Dependency Walker può aiutare a mostrare una dipendenza mancante.

+0

Ho applicato tutto ciò che hai detto, ma il messaggio di errore appare ancora. –