PDA

View Full Version : ساخت فایل اجرایی exe



smemamian
جمعه 14 تیر 1392, 18:42 عصر
سلام دوستان

من برنامه کوچیکی رو نوشتم و روی Build project کلیک می کنم (106648) در شاخه :

C:\Qt\Qt5.0.0\Tools\QtCreator\bin

فایلی به عنوان :

myproject-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-Debug

ساخته می شه که پوشه ی debug یک فایل exe با نام برنامه منه !

حالا چطوری من می تونم برنامه رو به دوستانم بدم و به راحتی باز کنن ؟ بدون اینکه کیوت روی کامپیوترشون نصب بشه !
توی برنامه هم از qrc (مثل تصاویر و..) استفاده کردم !

rubiks.kde
جمعه 14 تیر 1392, 20:10 عصر
البته بهتره برنامه رو در حالت release کامپایل کنید بعد فایل اجرایی رو برید از توی خود پوشه اجرا کنید به چندین dll گیر میده که میگه نیست و اگه برید توی جایی که Qt رو نصب کردید و جست و جو کنید اونجا وجود داره همه رو در کنار هم جمع کنید و به دوستانتون فایل اجرایی به همراه dll ها رو بدید.

smemamian
جمعه 14 تیر 1392, 20:29 عصر
تشکر

یعنی فایل :

myproject-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-Debug

رو باید به دوستانم بدم یا debug رو ؟

بعد این dll ها رو در کدام پوشه بریزم ؟
debug یا یه شاخه قبل ترش myproject-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-Debug ؟

اون محتویات عکس و... که در qrc ادد کردم چی میشه ؟

rubiks.kde
جمعه 14 تیر 1392, 21:18 عصر
ببینید الان اون طور که مشخصه شما تنها پروژه رو در حالت debug کامپایل کردید بهتره اول اون رو در حالت release کامپایل کنید تا هم حجم کمتر بشه و اگه نمیخواهید که هیچ.

تنها برید فایل اجرایی که تولید شده (حالا توی هرکدوم از پوشه ها هست ، من نمیدونم شما برنامتون رو کجا کامپایل کردید) به یه پوشه کپی کنید و اجرا کنید با هر بار اجرا به dll ها گیر میده برید اونا رو از محل نصب کپی کنید به کنار فایل اجرایی ، دوباره اجرا کنید و dll ها رو کپی کنید تا دیگه گیر نده.

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

البته اگه از sqlite و ... استفاده کردید باید برید درایورش رو هم مثل dll ها کپی کنی.

smemamian
دوشنبه 17 تیر 1392, 16:46 عصر
خب بعضی dll ها پیدا نمیشه ! مثلاً Qt5Multimediad.dll ! :-؟
توی نت هم برای دانلود سرچ کردم نبود !

omidshaman
دوشنبه 17 تیر 1392, 16:59 عصر
همشون هستن غیر ممکنه چیزی نباشه!
برو اون جایی که Qt رو نصب کردی تو پوشه bin هست...
مثلا برای من ادرسش این جاست
c://Qt//Qt5.0.1//5.0.1//mingw47_32//bin
دوما این که پروژه رو بزار تو حالت release بعد اجراش کن چون هم سرعت برنامه بیشتر میشه هم حجمش کمتر...

حامد مصافی
دوشنبه 17 تیر 1392, 18:21 عصر
خب بعضی dll ها پیدا نمیشه ! مثلاً Qt5Multimediad.dll ! :-؟
توی نت هم برای دانلود سرچ کردم نبود !
حدسم اینه که شما در فولدر اجرایی QtCreator دارید دنبال این فایل‌ها میگردید. به پوشه بایناری کیوت مراجعه کنید

smemamian
دوشنبه 17 تیر 1392, 18:37 عصر
آره... آخه چندجا گفته بودن توی bin هستش من اونجا دنبالش بودم .

خیلی لطف کردین دوستان

smemamian
دوشنبه 17 تیر 1392, 19:42 عصر
یکبار تمام dll ها رو کنار برنامه گذاشتم به خوبی برنامه اجرا شد.. بعد رفتم برنامه رو یه کم تغییر دادم، برنامه در خود نرم افزار به خوبی بالا میاد ولی وقتی dllها رو کنار برنامه میزارم خطای زیر رو میده :

106892

حامد مصافی
دوشنبه 17 تیر 1392, 22:34 عصر
libGLESv2.dll رو هم کپی کن کنار خروجی

smemamian
دوشنبه 17 تیر 1392, 22:46 عصر
گذاشتم باز همون پیغام رو میده
:(

smemamian
دوشنبه 17 تیر 1392, 23:09 عصر
توی این لینک گفته :

http://qt-project.org/forums/viewthread/27056/#122634

یه ه پوشه درست کن و اسمش رو بذار platforms و داخلش qwindows.dll رو بذار ! من این کار رو کردم باز همون پپیغام رو میده !

حامد مصافی
دوشنبه 17 تیر 1392, 23:14 عصر
dll های یونیکد رو هم کپی کردی؟

smemamian
دوشنبه 17 تیر 1392, 23:22 عصر
106905

این تصویر تمام dllهایی هست که من گذاشتم ! dll یونیکد کجای سیستم هست ؟ Award برنامه ی Exeی منه !

حامد مصافی
دوشنبه 17 تیر 1392, 23:31 عصر
platforms باید داخل پوشه‌ای به نام plugin باشه

smemamian
دوشنبه 17 تیر 1392, 23:42 عصر
بله، البته فکر کنم plugins باشه ! واخل داخل platforms هم 4تا dll هست که اون ها هم داخل platforms گذاشتم :

qminimal.dll
qminimald.dll
qwindows.dll
qwindowsd.dll


ولی بی فایده است :( این محتویات فایل pro هست :

#-------------------------------------------------
#
# Project created by QtCreator 2013-06-29T10:57:49
#
#-------------------------------------------------

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Award
TEMPLATE = app

RC_FILE = myapp.rc

#greaterThan(QT_MAJOR_VERSION, 4): QT += widgets multimedia


QT += core gui multimedia
QT += multimedia

SOURCES += main.cpp\
mainwindow.cpp \
addaward.cpp \
numberaward.cpp \
addspeak.cpp \
speak.cpp \
informationreview.cpp \
editinformation.cpp \
random.cpp \
stringclasstemp.cpp \
screenone.cpp \
introduction.cpp \
screentwo.cpp \
screenthree.cpp \
changeimage.cpp \
randompic.cpp \
help.cpp \
developer.cpp

HEADERS += mainwindow.h \
addaward.h \
numberaward.h \
addspeak.h \
speak.h \
informationreview.h \
editinformation.h \
random.h \
stringclasstemp.h \
screenone.h \
introduction.h \
screentwo.h \
screenthree.h \
changeimage.h \
randompic.h \
help.h \
developer.h

FORMS += mainwindow.ui \
addaward.ui \
addspeak.ui \
informationreview.ui \
editinformation.ui \
introduction.ui \
help.ui \
developer.ui

RESOURCES += \
myRes.qrc


نکنه باید به اینجا هم چیزی اضافه کرد ؟ یا هدر باید اضافه کرد ؟

حامد مصافی
دوشنبه 17 تیر 1392, 23:53 عصر
پیغام خطا شماره سطر سورس اصلی کیوت رو هم نوشته. این یعنی اینکه شما پروژه رو در حالت debug ساختید در حالی که بسیاری از فایل‌های شما releaseمد هستند. یک بار پروژه را در حالت release بسازید و امتحان کنید

smemamian
سه شنبه 18 تیر 1392, 00:01 صبح
آخه در حالت debug حداکثر تا 3 دقیقه اوکی میشه ولی توی حالت release روی build میمونه ! 10 دقیقه حدوداً صبر کردم باز توی همون حالت build موند ! این طبیعیه ؟

تاحالا releaseکامل تست نکردم!

حامد مصافی
سه شنبه 18 تیر 1392, 00:05 صبح
وقتی یک بار کامپایل می‌کنی بار دوم فقط آبجکت‌های تغییر یافته کامپایل میشن. یک بار release کامپایل کنی بعدی اونم مثل debug سریع میشه

omidshaman
سه شنبه 18 تیر 1392, 09:32 صبح
یک عکس میزارم از فایلایی که برای اجرا باید کنار برنامه باشه شاید بدرد بقیه هم بخوره (البته فولدر imageformats فقط مال وقتاییه که از resource توپروژه استفاده کرده باشین)
و این که بسته به پروژتون شاید قرار باشه dll های دیگه ای هم گزاشته بشه
این فایلا مخصوص Qt 5.1 ورژن mingw-32 هستش
106918

smemamian
سه شنبه 18 تیر 1392, 14:40 عصر
آقای omidshaman و حامد مصافی کمال تشکر رو دارم.

توسط راه حل آقای omidshaman حل شد .

مرسی

g e r m
سه شنبه 22 مرداد 1392, 13:16 عصر
با درود
من تازه با کیوت شروع به کار کردم و هیچ تجربه ای ندارم، قبلا دات نت کار میکردم
من هم مشکل smemamian عزیز دارم
کیوت ورژن 5.1.0 دارم و از کامپایلرهای mingw و vs 12 استفاده میکنم
همه dll ها رو کپی کردم و فوادر plugins/platforms هم ساختم براش اما رو هیچ سیستمی کار نمیکنه غیر از سیستم خودم، هر کاری بلد بودم کردم نشد .. توی اینترنت هم غیر از همین راه حل ها چیز دیگه پیدا نکردم
و این سوال برام پیش اومد که چرا ما باید دستی dll ها کپی کنیم و خود کامپایلر انجام نمی ده
من با qml شروع کردم، لطفا منو یاری کنید

g e r m
شنبه 26 مرداد 1392, 14:17 عصر
هیچ کس نیست به من کمک کنه؟!

smemamian
چهارشنبه 30 مرداد 1392, 10:39 صبح
dllهای مسیر زیر رو باید کپی کنی :


C:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin

اگه که انجام دادی یک بار تمامی پلاگین هارو کنارش بگذار :


C:\Qt\Qt5.1.0\5.1.0\mingw48_32\plugins