PDA

View Full Version : محیط Qt ایا از برنامه نوشته شده و اجرا شده فایل exe می سازد؟



motherboard
سه شنبه 27 خرداد 1393, 09:19 صبح
سلام.موردی که در کیوت برای من سوال شده این است که در محیط های معمول زبان c مثل dev و امثالهم وقتی برنامه رو کامپایل می کنیم علاوه برای ابجکت یک فایل exe هم درست میشه.اما در کیوت وقتی یک برنامه ای رو کامپایل می کنم و در اون محیط اجرا میکنم در طی این فرایند فایل های ابجکت تولید میشه ولی فایلی که پسوند exe داشته باشه رو در فولدر مربوط به پروژه نمیبینم.و این برام کمی عجیبه!!!!

parvizwpf
سه شنبه 27 خرداد 1393, 15:27 عصر
چرا ساخته میشه بهتره مسیرش رو در task manager دنبال کنید.

motherboard
سه شنبه 27 خرداد 1393, 17:22 عصر
منظورم این نبود که کیوت چه قدر از سی پی یو و حافظه رو گرفته.منظور من فایل exe ای هستش که در کامپایلرها به همراه makefile و object ها به وجود میاد.به طوری که وقتی روی exe کلیک کردیم برنامه اجرا بشه.امیدوارم متوجه منظورم شده باشید.

parvizwpf
سه شنبه 27 خرداد 1393, 17:30 عصر
منم منظورتون رو فهمیدم . منظورم راست کلیلک و انتخاب گزینه open file location هست.
http://www.uploadax.com/images/16943161164906984351.jpg

parvizwpf
سه شنبه 27 خرداد 1393, 17:36 عصر
معمولا در مسیر پروژه فولدری که تهش _debug هست میسازه سپس داخلش اگه فولدر debug رو ببینید معموا exe اونجاست.

alamate_aoal
سه شنبه 27 خرداد 1393, 17:50 عصر
سلام

qDebug() << qApp->applicationDirPath();
qDebug() << qApp->applicationFilePath();

motherboard
سه شنبه 27 خرداد 1393, 20:11 عصر
الان فایل exe رو پیدا کردم.اما یک مشکلی هست.ببینید صفحه کنسولی که در عکس زیر می بینید از روی سورس قسمت Qt Console Application به وجود اومده.چنین پروژه ای رو وقتی ران می کنم خیلی راحت و بدون اشکال صفحه ی کنسولی رو باز می کنه.اما وقتی از مسیر exe ای که براش درست شده اقدام به باز کردن فایل exe می کنم صفحه ی کنسولی رو نشون میده اما همراهش هم یک جور پیغام هشدار رو میده :متفکر:

120265

کامبیز اسدزاده
سه شنبه 27 خرداد 1393, 21:06 عصر
الان فایل exe رو پیدا کردم.اما یک مشکلی هست.ببینید صفحه کنسولی که در عکس زیر می بینید از روی سورس قسمت Qt Console Application به وجود اومده.چنین پروژه ای رو وقتی ران می کنم خیلی راحت و بدون اشکال صفحه ی کنسولی رو باز می کنه.اما وقتی از مسیر exe ای که براش درست شده اقدام به باز کردن فایل exe می کنم صفحه ی کنسولی رو نشون میده اما همراهش هم یک جور پیغام هشدار رو میده :متفکر:

120265


به خاطر کامپال به صورت داینامیکی شما باید در کنار فایل exe برنامه فایل Qt5Cored.dll رو داشته باشید معمولا در مسیر نصب شده Qt باید این فایل رو جستجو و در مسیر برنامه خودتون کپی کنید...

motherboard
سه شنبه 27 خرداد 1393, 21:42 عصر
به خاطر کامپال به صورت داینامیکی شما باید در کنار فایل exe برنامه فایل Qt5Cored.dll رو داشته باشید معمولا در مسیر نصب شده Qt باید این فایل رو جستجو و در مسیر برنامه خودتون کپی کنید...
فایل رو در کنار Qt5Cored.dll قرار دادم اما درست نشد.
120268

negative60
سه شنبه 27 خرداد 1393, 22:07 عصر
اينجا رو (http://barnamenevis.org/showthread.php?223421-%D9%85%D8%B4%DA%A9%D9%84-%D8%B9%D8%AC%DB%8C%D8%A8-%D8%AF%D8%B1-%D8%A7%D8%AC%D8%B1%D8%A7-%D9%88-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D9%87-%D8%B4%DA%A9%D9%84-Static-%D8%A8%D8%AF%D9%88%D9%86-dll-%D9%87%D8%A7) يک نگاه بنداز + به وسيله برنامه Find dll ميتونی dll هايی که تو برنامه استفاده شده رو مشاهده کنی

motherboard
سه شنبه 27 خرداد 1393, 22:18 عصر
امکان داره این موضوع به خاطر فرق نسخه پولی و غیر پولی اون باشه؟

parvizwpf
سه شنبه 27 خرداد 1393, 22:45 عصر
خیر این لامسب(qt) مثل vs حالیش نیست که خودش dll مربوط رو کنار پروژه بندازه. باید تک تک dll هایی که برای اجرای برنامه های qt لازمه رو از مسیرهای اصلی کنار فایل exe قرار بدید.

negative60
سه شنبه 27 خرداد 1393, 22:46 عصر
يکی از اين تفاوت های نسخه رايگان با لايسنس های پولی همين stand alone بودنشن هست از تفاوت های ديگش اطلاع ندار البته آموزش هايی هم برای کامپايل استاتيک تو کيوت وجود داره که ديگه در اون صورت برنامه شما نياز به dll های کيوت نخواهد داشت, يک نمونه آموزش کامپايل استاتيک رو ميتونيد اينجا (http://www.qa.qtips.ir/1224/%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84-%D8%A7%D8%B3%D8%AA%D8%A7%D8%AA%DB%8C%DA%A9-qt-5-2) و اينجا (http://www.7khatcode.com/973/%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84-qt-%D8%A8%D8%B5%D9%88%D8%B1%D8%AA-static) ببينيد اما خودم هنوز تست نکردم

کامبیز اسدزاده
چهارشنبه 28 خرداد 1393, 00:15 صبح
فایل رو در کنار Qt5Cored.dll قرار دادم اما درست نشد.
120268

خب...
راه حل....
برید به این مسیر که در Qt شما شاید یکمی متفاوت باشه این نسخه MSVC هستش...

C:\Qt\Qt5.3.0\5.3\msvc2013_opengl\bin

اینجا هرچی .dll هست همرو کپی کنید در کنار برنامتون و مشکل حل خواهد شد. مال شما نسخه MainGW هست فکر کنم...

معمولا Qt5Cored.dll

دلیل اینکه این خطاهارو میده واضحه داره میگه فایل dll فلان رو نمیشناسم ! پس باید در کنارش حتما وجود داشته باشه که در نسخه Dynamic برای Qt این یک مورد عادی هستش مگر نمیگم Qt رو به صورت Static کامپایل کنید که فعلا پیشنهاد نمیکنم...

به هر فایلی که خطا میده اون فایل رو باید در کنار برنامتون داشته باشید.


به چند نکته هم اشاره کنم :

معمولا وقتی در حالت Debug برنامه رو کامپایل میکنید خطا برای عدم وجود Qt5Cored.dll میده و در صورتی که در حالت Release کامپایلش کنید خطایی شامل Qt5Core.dll رو میده که معمولا حجم فایل های Debug بیشتر از Release هستش شناسه مشخصه این دو مورد هم از کلمه اضافه d در فایل های dll قابل تشخیصه مثلا Qt5Cored.dll مربوط به Debug هست و Qt5Core.dll مربوط به Release پس به این مورد هم توجه کنید که متناسب با نوع کامئایل برنامه فایل های مربوطه رو در کنارش قرار بدین.

motherboard
چهارشنبه 28 خرداد 1393, 01:16 صبح
هاهاهاها درست شد.از همگی ممنونم.:بوس:

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

کامبیز اسدزاده
چهارشنبه 28 خرداد 1393, 11:34 صبح
هاهاهاها درست شد.از همگی ممنونم.:بوس:

علت اینکه روش static رو فعلا پیشنهاد نمی کنید چیه؟ایا برای انجام این روش پیش نیازش مهارت داشتن در پروژه کیوت هست؟

مهارت به کنار و در جای خوذ...
ولی وقتی شما فعلا در مرحله یادگیری و تجزیه تحلیل Qt هستید همون نسخه Dynamic رو پیشنهاد میکنم و درضمن استفاده از نسخه Static به کار ما نمیاد چون ریلیز دادن از این نسخه بدون داشتن لیسانس غیرقانونی هستش.

من خودمم از نسخه Dynamic استفاده میکنم و مشکلی هم نمیبینم مگه نمیگم شما خیلی حساس باشی به وجود این فایل های dll در کنار برنامه در این صورت خب پشنهاد همون نسخه Static خواهد بود.