PDA

نسخه کامل مشاهده نسخه کامل : اجرای فایلهای Exe تولیدی توسط ویژوال سی در کامپیوترهای دیگر :



cpplover
13-01-2008, 18:33
با سلام
زمانی که یک برنامه را در visual c++ کامپایل می کنم و یک فایل اجرایی ایجاد می شود زمانی که تمام فایل های ایجاد شده را به کامپیوتر دیگری منتقل می کنم برنامه در آن کامپیوتر اجرا نمی شود و مثلا خطایی از عدم وجود یک dll از طرف کامپیوتر صادر می شود حالا میخواستم بدانم چطور میشه کاری کرد که برنامه های من در کامپیوتر های دیگر بدون هیچ مشکلی اجرا شوند ؟

m3hrz4d
13-01-2008, 20:27
برنامه رو با چی نوشتین یعنی مثلا MFC, ATL یا Win32 Application و در چه ورژنی از VS ؟ 98 , 2002 یا 2005 ؟
در صورتی که MFC یا ATL استفاده کردین باید DLL های و فایل های مربوط به این ها(برای MFC بجز DLL اصلی که میتونین درون خود فایل EXE قرارش بدین دو یا سه تا فایل دیگه هم بود تا اونجا که یادمه) رو هم روی سیستم مقصد قرار بدین.

cpplover
13-01-2008, 22:24
سلام

من برنامه رو از نوع MFC )مبتنی بر کادر تبادلی) و در VISUAL 2005 اجرا و کامپایل می کنم ضمنا آیا شما در مورد static linking چیزی شنیدید ؟ من شنیدم که با این روش میشه این مشکلات رو حل کرد اگه اطلاعاتی در این مورد دارید من رو بی اطلاع نگذارید
با تشکر

m3hrz4d
14-01-2008, 01:47
شما میتونین با انتخاب Use MFC in a Static Library در قسمت Properties مربوط به Project تون (در قسمت General) کاری کنین که دیگه نیازی به DLL مربوط به MFC نباشه .البته این کار حجم EXE شما رو افزایش میده.

someone
14-01-2008, 02:08
سلام.


در vc6.0 برای انتشار برنامه نیاز به سه dll دارین :

1- MFC42.dll که کتابخانه اصلی کلاس های MFC هست
2- MFCD42.dll که شامل کلاس های اصلی مربوط به پایگاه داده هست
3- MSVCRT.dll که کتابخانه های ++C هست.


اما تا جایی که من اطلاع دارم شما از vc2005 استفاده میکنین.
کافیه بسته ی زیر رو از سایت Mictosoft بگیرین :
(برای انتشار برنامه حتما و حتما باید از این بسته استفاده کنین. )
این بسته باید روی سیستم مورد نظر نصب بشه.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

(vcredist_x86.exe) در حدود 3MB هست.


اما در مورد static linking ، تنها در شرایطی خاص مورد استفاده قرار میگیره
و بستگی به برنامه ی شما داره. و ضمنا روش اصلا مناسبی نیست.
علاوه بر اینکه حجم برنامه رو به شدت زیاد میکنه ،
در مواردی که برنامه و یا سیستم تحت فشار باشه مشکلات غیر قابل کنترلی رو ایجاد میکنه.

cpplover
14-01-2008, 20:30
با سلام و تشکر از دوستان به خاطر پاسخها :

چیزی که خیلی در ویژوال 2005 نسبت به ویژوال 6 مشهود بود حجم بالای فایلهای ایجاد شده بود .مثلا در ویژوال 6 شاید حداکثر حجم فایل به 7 مگابایت در پروژه های معمولی می رسید و لی در ویژوال 2005 شاید اگه همون پروژه ساخته می شد حجم به 30 مگابایت می رسید!!!

در مورد بسته ای هم که گفته بودید با اینکه من در کامپیوتر دیگه اون رو نصب کردم اما باز هم اجرا نشد اما باید این رو بگم که برنامه من از اکتیوایکس هم استفاده میکنه آیا برای اجرای اکتیوایکسها نیاز به dll و یا فایل ocx در کامپیوتر مقصد نیست ؟

someone
14-01-2008, 22:40
دوباره سلام!
فایل OCX و یا DLL شما علاوه بر اینکه در سیستم هدف هم باید وجود داشته باشه
باید Register هم بشه.
با استفاده از Regsvr32 که کافیه اون رو در CMD ویندوز بنویسین. مثلا :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

cpplover
15-01-2008, 00:15
سلام

پس زمانی که نرم افزار ها ی مختلف رو روی سیستم نصب می کنیم این فایلها ی اکتیو ایکس رو با همین دستور regsvr32 ویزاردهای نصب برنامه اجرا می کنن ؟

یعنی سوالم اینه که ویزاردهای نصب هم در زمان نصب دقیقا عمل رجیستر کردن رو انجام میدن ؟

با تشکر

someone
17-01-2008, 08:28
بله! دقیقا همینطور هست.
شما هم میتونین به سادگی برای برنامه تون یک Setup بسازین. که این امکان در VS2005
وجود داره.

morix_001
26-02-2008, 21:06
من با wim32 برنامه رو می نویسم ( consol ) ! برای بعضی کسانی که من فایل exe رو می فرستم برنامه میاد ولی بعضیا می گن که نمیاد ! چی کار کنم ؟!؟؟