2009-05-22 14 views
12

मैं क्यूटी निर्माता का उपयोग कर ऐप्स विकसित करना सीख रहा हूं। मैंने विंडोज के तहत एक सरल ऐप बनाया है, mingwm10.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll पर निर्भर करता है। QtQui4.dll से बाहर मैं केवल कुछ विगेट्स का उपयोग करता हूं, और बाकी सभी की आवश्यकता नहीं है ... क्या यह QtGui4.dll के आकार को कम करने या एप्लिकेशन के तैनाती के आकार को कम करने के लिए कुछ और करना संभव है? स्थिर लिंकिंग के बारे में कैसे? क्या यह पूरे डीएलएल, या इसके केवल कुछ हिस्सों को एम्बेड करेगा? और क्यूटी के साथ कुछ डीएलएस को स्थिर रूप से और कुछ गतिशील रूप से लिंक करना भी संभव है?क्यूटी जीयूआई आवेदन आकार घटाएं

उत्तर

10

कुछ कार्यों को हटाकर QtGui4.dll को कम करना संभव नहीं है। ट्रॉल्टेक having a look at this है, लेकिन अच्छा समाधान काफी दूर लगता है:

स्टेटिक लिंकिंग, मुझे लगता है कि यह विंडोज़ पर बहुत ही समस्याग्रस्त है। हर बार मैंने कोशिश की, यह एक दुःस्वप्न था।

तो, ऐसा लगता है कि आप नियमित डीएलएल के साथ फंस गए हैं। केवल एक चीज आप कर सकते हैं (जो मैं अपने क्यूटी क्षुधा के लिए करना है): अपने संस्थापक में अपने DLL

या

  • उपयोग मजबूत संपीड़न संपीड़ित करने के लिए

    • उपयोग UPX

    यदि आप पहले से ही अपने डीएलएल को यूपीएक्स करते हैं, तो आप इसे इंस्टॉलर संपीड़न के साथ और कम नहीं कर सकते हैं, लेकिन इससे अन्य फाइलें कम हो सकती हैं।

+1

हाँ, "UPX -9 QtGui4.dll" जाने का तरीका है :) –

+0

दिलचस्प युक्ति, मैंने पहले कभी यूपीएक्स का उपयोग नहीं किया है। – PowerApp101

+0

धन्यवाद! जीयूआई क्यूटी ऐप का सबसे छोटा पदचिह्न क्या है जिससे आप इस तरह से संग्रह कर सकते हैं? – Dmitri

5

कॉन्फ़िगरेशन के साथ क्यूटी लाइब्रेरी को मैन्युअल रूप से कॉन्फ़िगर करने का सबसे अच्छा तरीका है।

configure --help 

आपको कई विकल्प दिखाई देंगे जो डिस्क और मेमोरी पदचिह्न दोनों को कम करने में मदद कर सकते हैं। जैसे

--no-stl 
--no-exceptions 

दोनों आपके आवेदन के पदचिह्न को कम कर सकते हैं। आप अपने कंपाइलर के लिए अधिक आक्रामक अनुकूलन झंडे का उपयोग करने के लिए mkspec को भी संशोधित कर सकते हैं।

1

यदि आप स्थिर रूप से लिंक करते हैं तो आप 1.5 जीबी एक्सई के साथ समाप्त होते हैं और आप कुछ कार्यक्षमता जैसे प्लग-इन का त्याग करते हैं। तो यह वास्तव में इसके लायक नहीं है जब तक कि आप डीएलएस वितरित नहीं करना चाहते हैं। लेकिन हाँ, आप हेनरिक के सुझाव को आजमा सकते हैं और वेबकिट को भी बाहर कर सकते हैं जो शायद कोड का सबसे बड़ा हिस्सा है।

+0

मूल प्रश्न के संदर्भ में, वेबकिट को छोड़कर वह कोई फर्क नहीं पड़ता इसका उपयोग नहीं किया (केवल कोर, गुई, नेटवर्क मॉड्यूल)। –

संबंधित मुद्दे