Ridurre le dimensioni delle applicazioni Qt GUI
-
23-08-2019 - |
Domanda
Sto imparando a sviluppare applicazioni che utilizzano Qt Creator. Ho creato una semplice applicazione in ambiente Windows, dipende usa mingwm10.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll. Fuori QtQui4.dll io uso solo un paio di widget, e non hanno bisogno di tutto il resto ... E 'possibile sia ridurre le dimensioni del QtGui4.dll o di fare qualcosa di diverso per diminuire le dimensioni dispiegamento di applicazione? Che ne dite di collegamento statico? Sarà incorporare tutto il dll, o solo parti di esso che vengono utilizzati? Ed è anche possibile con Qt per collegare alcune DLL staticly e alcuni dynamicly?
Soluzione
Non è possibile ridurre la QtGui4.dll rimuovendo alcune funzioni. Trolltech è avere uno sguardo a questo , ma la buona soluzione sembra abbastanza lontana:
linking statico, penso che sia molto problematico sulle finestre. Ogni volta che ho provato, è stato un incubo.
Quindi, sembra che si è bloccato con la DLL regolare. L'unica cosa che si può fare (cosa che faccio per le mie applicazioni Qt è):
- UPX per comprimere la DLL
o
- utilizzare forte compressione nel vostro installatore
Se hai già UPX la DLL, non è possibile ridurlo ulteriormente con la compressione di installazione, ma questo può ridurre altri file.
Altri suggerimenti
Il modo migliore è quello di configurare manualmente la libreria Qt con configure. Mediante l'emissione di
configure --help
si vedrà una serie di opzioni che potrebbero contribuire a ridurre sia rigido e occupazione di memoria. Per es.
--no-stl
--no-exceptions
Possiamo ridurre l'impronta della vostra applicazione. È inoltre possibile modificare il mkspec utilizzare flag di ottimizzazione più aggressive per il vostro compilatore.
Se si collega in modo statico si finisce con un exe 1.5GB e sacrifichi alcune funzionalità, come plug-in. Quindi non è davvero la pena a meno che non si desidera distribuire le DLL. Ma sì, si potrebbe provare il suggerimento di Henrik e anche escludere Webkit, che è probabilmente il più grande pezzo di codice.