سؤال

أنا أتعلم تطوير تطبيقات باستخدام Creator QT. لقد قمت ببناء تطبيق بسيط تحت Windows، يعتمد على الاستخدامات Mingwm10.dll و Qtcore4.dll و Qtgui4.dll و Qtnetwork4.dll. خارج Qtqui4.dll أقوم باستخدام AA زوجين فقط من الحاجيات، ولا تحتاج إلى كل ما تبقى ... هل من الممكن إما أن تقليص حجم Qtgui4.dll أو القيام بشيء آخر لتقليل حجم النشر للتطبيق؟ ماذا عن ربط ثابت؟ هل ستقوم بتضمين DLL بأكملها، أو أجزاء منه فقط تستخدم؟ وأيضا هل من الممكن مع QT لربط بعض DLLs Stainicly وبعضها ديناميا؟

هل كانت مفيدة؟

المحلول

لا يمكن تقليص qtgui4.dll عن طريق إزالة بعض الوظائف. ترولتيك هو إلقاء نظرة على هذا, ، ولكن الحل الجيد يبدو بعيد جدا:

ربط ثابت، وأعتقد أنه مشكلة للغاية على ويندوز. في كل مرة حاولت، كان كابوسا.

لذلك، يبدو أنك عالق مع DLL العادية. الشيء الوحيد الذي يمكنك القيام به (الذي أقوم به لتطبيقات QT الخاصة بي):

  • استعمال UPX. لضغط DLL الخاص بك

أو

  • استخدام ضغط قوي في المثبت الخاص بك

إذا قمت بالفعل ب UPX DLL الخاص بك، فلا يمكنك تقليلها مع ضغط المثبت، ولكن هذا يمكن أن يقلل من الملفات الأخرى.

نصائح أخرى

أفضل طريقة هي تكوين مكتبة QT يدويا مع تكوين. من خلال إصدار

configure --help

سترى عددا من الخيارات التي قد تساعد في تقليل حجم القرص والذاكرة. على سبيل المثال

--no-stl
--no-exceptions

يمكن أن يقلل كلاهما من بصمة طلبك. يمكنك أيضا تعديل MKSPEC لاستخدام إشارات تحسين أكثر عدوانية للمبرمج الخاص بك.

إذا كنت ترتبط بشكل ثابت، فأنت في نهاية المطاف باستخدام EXE 1.5GB وأنت تضحي بعض الوظائف مثل المكونات الإضافية. لذلك ليس حقا يستحق كل هذا العناء ما لم تكن ترغب في توزيع DLLs. لكن نعم، يمكنك تجربة اقتراح هنريك واستبعد أيضا WebKit وهو ربما أكبر قطعة من التعليمات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top