PDA

View Full Version : سوال: حجم بسیار بالای DLL ها



pars1376
چهارشنبه 15 مرداد 1393, 10:10 صبح
من یه برنامه ساده مثل همونی که آقای کامبیز تو آموزش هاشون (http://barnamenevis.org/showthread.php?436304-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-C-%E2%80%8E%E2%80%8E-Qt-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85) داده بودن نوشتم
مشکل اولم اینه که نمیتونم اسم DLL هاس مورد نیازمو بفهمم. فک کنم باید یه قسمتی باشه که dll هایی که استفاده کردم رو بنویسه.

آخرشم مجبور شدم برنامه رو اجرا کنم و هربار که خطای نبودن یه dll رو میدید اونو کپی میکردم. این dll ها بودن
Qt5Widgetsd.dll
Qt5Cored.dll
Qt5Guid.dll
و...
اما اینا حجم برنامه رو خییلییی بالا بردن. حدود 370 mb
من فکر میکردم جداکثز 4-5 مگ بشه

کامبیز اسدزاده
چهارشنبه 15 مرداد 1393, 12:48 عصر
من یه برنامه ساده مثل همونی که آقای کامبیز تو آموزش هاشون (http://barnamenevis.org/showthread.php?436304-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-C-%E2%80%8E%E2%80%8E-Qt-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85) داده بودن نوشتم
مشکل اولم اینه که نمیتونم اسم DLL هاس مورد نیازمو بفهمم. فک کنم باید یه قسمتی باشه که dll هایی که استفاده کردم رو بنویسه.

آخرشم مجبور شدم برنامه رو اجرا کنم و هربار که خطای نبودن یه dll رو میدید اونو کپی میکردم. این dll ها بودن
Qt5Widgetsd.dll
Qt5Cored.dll
Qt5Guid.dll
و...
اما اینا حجم برنامه رو خییلییی بالا بردن. حدود 370 mb
من فکر میکردم جداکثز 4-5 مگ بشه

سلام
نسخه Qt شما چیه و از چه کامپایلری استفاده میکنید؟
با کامپایلر MSVC خروجی بگیرید من با این روش بیخیال کامپایل Static شدم.

pars1376
چهارشنبه 15 مرداد 1393, 13:25 عصر
سلام
نسخه Qt شما چیه و از چه کامپایلری استفاده میکنید؟
با کامپایلر MSVC خروجی بگیرید من با این روش بیخیال کامپایل Static شدم.

از این نسخه :Qt5.3.0
و کامپایلر هم : mingw482_32

یعنی بخاطر کامپایلره؟ اینجوری باشه که فایده نداره!
اینجوری هر کدوم به مشکل دارن! اون MSVC که میگفت glu32.lib رو پیدا نمیکنه اینم که حجمش انقدره
البته تقریبا متوجه شدم برای رفع این خطا چیکار باید کرد اما هنوز انجام ندادم
وقتی تو لینوکس هم کامپایل بشه وضع همینجوره؟
در رابطه با DLL ها متونید کمکم کنید؟

کامبیز اسدزاده
چهارشنبه 15 مرداد 1393, 13:38 عصر
از این نسخه :Qt5.3.0
و کامپایلر هم : mingw482_32

یعنی بخاطر کامپایلره؟ اینجوری باشه که فایده نداره!
اینجوری هر کدوم به مشکل دارن! اون MSVC که میگفت glu32.lib رو پیدا نمیکنه اینم که حجمش انقدره
البته تقریبا متوجه شدم برای رفع این خطا چیکار باید کرد اما هنوز انجام ندادم
وقتی تو لینوکس هم کامپایل بشه وضع همینجوره؟
در رابطه با DLL ها متونید کمکم کنید؟

ببینید در لینوکس مشکل حجمی نداریم چون بخوای نخوای باید کتابخانه رو در Archive لینوکست داشته باشی.
ولی در زمینه ویندوز مشکل بالا بودن حجم فایل های dll مورد نیاز بالاست دلیلش هم اینه که از MainGw استفاده میکنید.
در صورتی که از MSVC استفاده کنید حجمش خیلی بهینه میشه برای مثال من خودم این مورد رو به طور اتفاقی متوجه شدم وقتی با MainGw کامپایل میکنم حجم فایل exe میاد میشه 2 مگ و فالی های dll میره بالای 300-400 مگ ولی وقتی از کامپایلر MSVC ANGLE یا MSVC-OpenGL استفاده میکنم فایل exe میشه 12 مگ و فایل های dll در حد کیلوبایت ! یعنی کل فولدر برنامم رو که مقایسه میکنم جمعا 70 مگ نمیشه در حالی که در نسخه MainGW میرفت بالای 900 مگ که واقعا وحشتناک بود.

دلیل اینکه در MSVC حجم اینهمه کاهش پیدا میکنه مشخصه چون این کامپایلر مختص ویندوز هست ولی MainGW یک کامپایلری هست بر پایه GCC مختص ایستگاه های UNIX همچنین در Mac OS X نیز وقتی با clang کامپایل میکنید نسبت به MainGW بهینه تره پس این مشخصه که ذاتا بهترین گزینه برای انتخاب کامپایلر نسبت به نوع سیستم عامل مهم هستش.

پیشنهاد من در ویندوز استفاده از MSVC هستش اگه مشکل دارید باهاش بگید راهنمایی کنیم تا حلش کنید.

pars1376
چهارشنبه 15 مرداد 1393, 14:41 عصر
واقعا ممنونم
فکر میکنم این لینک اطلاعات کافی رو داده.
http://qt-project.org/wiki/Category:Tools::msvc
اگه مشکلی پیش اومد حتما ازتون کمک میگیرم :لبخندساده:

کامبیز اسدزاده
چهارشنبه 15 مرداد 1393, 14:49 عصر
واقعا ممنونم
فکر میکنم این لینک اطلاعات کافی رو داده.
http://qt-project.org/wiki/Category:Tools::msvc
اگه مشکلی پیش اومد حتما ازتون کمک میگیرم :لبخندساده:

خواهش میکنم....
در حالت عادی اگه Qt open GL یا Qt Angle رو نصب کنید نباید نیازی برای بکار گیری این روش داشته باشید ولی در صورت داشتن مشکل همین لینک توضیحات رو به صورت شفاف داده.


موفق باشید.