الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هذه الحالة طبيعية ؟

بدأه ahmed arkan في 29 يوليو 2009 · 10 رد · 2,578 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عملت برنامج بسيط حجمه 1.92 ميكا بايت ..وقمت باضافة ملفات dll لكي يعمل على اجهزة اخرة غير حاوية على هذه الملفات

ولكن تفاجئت في حجم البرنامج..حيث اصبح حجمه 162 ميكا بايت!...اليس هذا بالكثير؟..فانا بصراحة لم ارغب في تعلم البرمجة في بيئة الدوت نت كون برامجها تحتاج الى مكتبات فريم ورك ..والتي لها ايظاً حجمها الكبير

بصراحة انا اريد برمجة تطبيقات تعمل باحجام قليلة...فماهي البيئة التي تنصحوني بها...ام ان هناك اعدادات خاصة اعملها في بيئة Qt تمكنني من التخلص من هذا الحجم الكبير؟

skyiraq-f9011c1200.jpg

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#2

كيف ترجمت المشروع ؟

هل تستخدم IDE ؟

اذا كنت تعمل من سطر الاوامر نفد الاتي :

qmake -project

qmake

make release

في هذه الحالة ستكون النسخة التنفيذية صغيرة وتستطيع توزيعها بدون مشاكل ، وملفات ال dll لها هي :

QtCore4.dll

QtGui4.dll

وليست التي تحوي حرف d في الاخر .

و كذلك ملف mingwm10.dll وهذا لا يتبع لكيوتي وانما هذا ملف ال run time لبرامج سي++.

بالتوفيق.

#3

وعليكــم السـلام ورحمة الله وبركاتـه..

نعم اخي وانا ايضاً كنت متعجبة من حجم الملف!!

قبل النظر إلى الصورة و مشاركة اخي sudanix

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

موفق

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#4

هذا ليس خطأ في الترجمة ، وانما هذه حالة طبيعة لمن يريد ذلك.

في كيوتي تستطيع ان تترجم البرنامج اما كـ release version او كـ debug version

ال debug version يستخدم في اعمال التنقيح وتتبع البرامج وهذا يستخدمه المطورين حتى يتم اكتشاف الاخطاء ، وفي الاخير يعاد ترجمة المشروع كـ release حتى يوزع للمستخدمين .

ولكي تترجم برنامجك كـ release نفذ:

qmake -projectqmake
make release

او يمكن استخدام هذه الطريقة ايضا

qmake -projectqmake -config release
make

او بالطبع يمكنك ان تترجم من خلال الـ QtCreator بالتأكيد ، ولكن تأكد من ان النسخة release .

اما لكي تترجمه كـ debug vesrion "وهذا سيزيد حجم البرنامج نظرا لوجود Debug Symbol table" :

qmake -projectqmake
make [or] make debug

اخر ملاحظة هي ملفات dll الخاصة بالنسخة Debug تختلف عن ملفات dll الخاصة بـ release ، حيث ينتهي اسم الملف في النسخة debug بالحرف d "دلالة على debug " وهي :QtCored4.dll و QtGuid4.dll

الان اخي أحمد ، ماذا تريد أن تفعل ؟

هل تريد اعادة ترجمة مكتبة كيوتي ك static حتى تنتهي من مشاكل ال dependency ؟

ام هل تريد تريد توزيع ملفات dll مع برنامجك ؟

وسأحاول ان اطرح موضوعا حول اعادة ترجمة كيوتي كـ static حيث هناك بعض النقاط التي يجب توضيحها اكثر.

بالتوفيق.

#5

بالبداية اشكركم على المرور والرد

واود ان ابين ان لدي مشاكل ماشاء الله توالت علي

اخي sudanix عندما قوم بترجمة المشروع من سطر الاوامر وتطبيق طريقتك تظهر لي المشكلة التالية

skyiraq-f8a50a9680.jpg

وبالنسبة للملفات التي قمت بادراجها مع الملف التنفيذي ... لم انجح في ادراج غيرها...حيث قمت باضافة الملفات التي اشرت اليها حضرتك سابقاً لي ...ولكن لم يعمل الملف التنفيذي في الاجهزة الاخرى وكذلك هو الحال عند عدم اضافة الملف mingwm10.dll ...والصورة تتكلم

skyiraq-12c2bb569f.jpg

ومع العلم انني اقوم باستخدام البيئة البرمجية Qt SDK الاصدار 4.5.2 واقوم بترجمة المشروع من خلالها ... والان حدثت معي مشكلة اخرى..وهي فشل بناء مشروعي وظهور الرسالة التالية

skyiraq-3ea025f1fb.jpg

اقتباس
الان اخي أحمد ، ماذا تريد أن تفعل ؟

هل تريد اعادة ترجمة مكتبة كيوتي ك static حتى تنتهي من مشاكل ال dependency ؟

ام هل تريد تريد توزيع ملفات dll مع برنامجك ؟

ارغب في الحل الثاني ... كونه لايأخذ حجم كبير..

شكراً لكم واتعبتكم معي.

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#6

لا يوجد داعي لكي تعمل من سطر الاوامر اذا لم تكن تعمل عليه من قبل .

كل ما عليك هو ان تعيد بناء المشروع كالاتي :

تاكد من علامة "الصح" على النسخة release

post-60254-1248891079_thumb.png

ثم اضغط على Build all

ثم run .

والان لكي تنقل البرنامج الى جهاز اخر ، افتح مجلد المشروع :

post-60254-1248891226_thumb.png

لاحظ وجود المجلدين debug و release ؟

المجلد debug يحوي نسخة التنقيح والتتبع وهي تأتي في حالة كانت علامة الصح على debug

المجلد release يحوي النسخة التي يجب توزيعها للمستخدمين وهي تاتي في حالة كانت علامة الصح على release

الان انسخ برنامجك من داخل مجلد release ، لاحظ انه حجمه سيكون صغير جدا :)

ثم اذهب الى مجلد Qt وانسخ ملفات dll مع البرنامج كالشكل التالي :

post-60254-1248891472_thumb.png

الان اضغط الملفات باستخدام winzip ، ثم افتح nsis واختر الخيار الموضح في الصورة

post-60254-1248892051_thumb.png

ثم اختر مسار الملف المضغوط ونفذ generate

post-60254-1248892087_thumb.png

اخيرا راح تلقى ملف التنصيب جاهز وعند فتحه

post-60254-1248892380_thumb.png

وسيعمل معك في أي نظام ويندوز :wink:

وحجم الملف النهائي هو 4 ميجا وشوية فقط .

بالتوفيق.

تم تعديل هذه المشاركة بواسطة SudaNix في 29 يوليو 2009 في 21:41

1
#7

الاخ sudanix ....اشكرك جداً على هذه التفاصيل في اجابتك....بارك الله فيك

فقط بالنسبة لسؤالي حول هذه الرسالة التي تظهر لي عند فشل بناء المشروع.. ماسبب ظهورها لي؟ بحيث انها الان تظهر بمجرد بناء مشروع عبارة عن فورم بدون اي اضافات (فقط فورم)

skyiraq-3ea025f1fb.jpg

اسف اخي ... اتعبتك معي

تم تعديل هذه المشاركة بواسطة ahmed arkan في 30 يوليو 2009 في 00:00

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#8

تأكد من وجود علامة الصح في

option -> tool -> Qt4

post-60254-1248903520_thumb.png

واعد تنظيف المشروع clean all

ثم build all

ثم run

بانتظارك..

#9

شاكرة اهتمامك اخي sudanix.

معلومات غزيرة و خبيرة بمشاركاتك

بكل القسم طبعا :wub:

ما شاء الله بارك الله بيك

آسفة للمقاطعة

موفقين يارب

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#10

الاخ sudanix ... شكراً لك على اجابتك... وبالنسبة لعلامة الصح كانت موجودة.. ولكن بمجرد ان قمت باعادة تنصيب البيئة من جديد ... تخلصت من مشاكل بناء المشروع..وقمت ايضاً بتطبيق شرحك اعلاه حول بناء المشروع..ونجح معي....بارك الله فيك اخي العزيز ووفقك الى ماتصبو اليه..

بقي ان اسأل كيف يمكن ان اجعل الملف التنفيذي مع الملفات التي يحتاجها عبارة عن جزء واحد فقط ؟ هل يتم ذلك بواسطة اعادة ترجمة مكتبة كيوتي كـ static ؟ ام غير ذلك

مع التقدير

تم تعديل هذه المشاركة بواسطة ahmed arkan في 31 يوليو 2009 في 13:39

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#11

الله يخليك اختي رغد ، وتشكري على المرور :happy: ..

الاخ أحمد :

اقتباس
بقي ان اسأل كيف يمكن ان اجعل الملف التنفيذي مع الملفات التي يحتاجها عبارة عن جزء واحد فقط ؟

نعم ، يجب ان تعيد بناء مكتبة كيوتي كـ Static library .

واي سؤال يرحب به..

وفقكم الله والى اللقاْء.

مواضيع مشابهة