2009-05-22 18 views
12

Qt Creator kullanarak uygulamalar geliştirmeyi öğreniyorum. Ben, Windows altında basit bir uygulama inşa mingwm10.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll bağlıdır bağlıdır. QtQui4.dll Dışında Ben sadece bir çift widget'ları kullanıyorum ve geri kalanların tümüne ihtiyacım yok ... QtGui4.dll boyutunu küçültmek veya uygulama büyüklüğünü azaltmak için başka bir şey yapmak mümkün mü? Statik bağlama hakkında ne dersiniz? Bütün dll'yi mi yoksa sadece bir kısmını mı kullanacak? Ve ayrıca bazı donanımları statik ve bazı dinamik olarak bağlamak için Qt ile mümkün mü?Qt GUI uygulama boyutunu küçültme

cevap

10

Bazı işlevleri kaldırarak QtGui4.dll dosyasını küçültmek mümkün değildir. Trolltech having a look at this'dur, ancak iyi çözüm oldukça uzak görünüyor:

Statik bağlantı, sanırım pencerelerde çok sorunlu. Her denediğimde, bir kabus oldu.

Yani, normal DLL ile sıkışmış gibi görünüyor. Yapabileceğiniz tek şey (benim Qt uygulamaları için do):

  • kullanım UPX Montajcinizin içinde DLL

veya

  • kullanım güçlü sıkıştırma sıkıştırmak için

Eğer zaten dll'nizi UPX yaparsanız, yükleyici sıkıştırması ile daha fazla indiremezsiniz, ancak bu diğer dosyaları azaltabilir.

+1

Yea, "UPX -9 QtGui4.dll" yolunda git :) –

+0

İlginç bir ipucu, daha önce UPX kullanmamıştım. – PowerApp101

+0

Teşekkür ederiz! GUI Qt uygulamasının bu şekilde arşivleyebileceğiniz en küçük ayak izi nedir? – Dmitri

5

En iyi yol, Qt kitaplığını yapılandırılmış olarak el ile yapılandırmaktır.

, hem disk hem de bellek ayak izini azaltmaya yardımcı olabilecek bir dizi seçenek göreceksiniz. Örneğin. Her ikisi de uygulamanızın kapladığı alanı azaltabilir. Ayrıca, derleyiciniz için daha agresif optimizasyon bayrakları kullanmak için mkspec'i de değiştirebilirsiniz.

1

Statik olarak bağlanırsanız, 1,5 GB'lık bir exe ile sonuçlanırsınız ve eklentiler gibi bazı işlevleri feda edersiniz. Öyleyse dll'leri dağıtmak istemediğiniz sürece buna değmez. Ama evet, Henrik'in önerisini deneyebilir ve muhtemelen kodun en büyük parçası olan Webkit'i hariç tutabilirsiniz.

+0

Özgün soru bağlamında, WebKit hariç, herhangi bir değişiklik yapmaz. kullanmadı (sadece Core, Gui, Network modülleri). –