PDA

View Full Version : سوال: مشکل در اجرای یک پروژه mfc



feri88
جمعه 27 دی 1387, 15:14 عصر
سلام
من یه پروژه ی MFC از یه بنده خدایی گرفتم که تو مد debug کامپایل شده، حالا که می خوام تو کامپیوترم اجراش کنم، ارور می ده که فایل MFC...DLL رو نمی تونه باز کنه.
دلیلش اینه که اون تو حالت Debug کامپایل کرده و اگه تو حالت Release کامپایل می کرد،من می تونستم تو کامپیوترم اجراش کنم.
حالا سوالم اینه که آیا راهی وجود داره که منم این پروژه رو بتونم کامپایل کنم و نتیجه ی برنامه رو ببینم؟
مرسی:چشمک:

Nima_NF
جمعه 27 دی 1387, 21:20 عصر
متوجه سوالتان نشدم،
اگر پروژه و ++Visual C دارید که دوباره آن را کامپایل کنید.

فایل اجرایی در حالت debug نیازمند همان نسخه SDK که همراه ++VC نصب می شود (یا شما نصب می کنید) است.
در حالت release هم نیازمند Visual C++ run-time مربوط به همان نسخه ++VC هست. (یا جدا نصب کنید یا توسط VC نصب می شوند)

Cave_Man
دوشنبه 21 بهمن 1387, 14:05 عصر
آیا مییشه کاری کرد که برای اجزا نیازی به هیچ جزء حداگانه ای بجز خود برنامه نباشه؟

Nima_NF
دوشنبه 21 بهمن 1387, 14:38 عصر
آیا مییشه کاری کرد که برای اجزا نیازی به هیچ جزء حداگانه ای بجز خود برنامه نباشه؟

dll های MFC را می توان به صورت static تعریف کرد (در properties پروژه) اما visual C++runtime را خیر، یا dll های آن را باید در کنار فایل اجرایی کپی کنید یا آن ها را در سیستم نصب کنید.
در VC++6 معمولا نیازی به نصب نیست چون اکثر آن dll ها (که قدیمی هستند) در سیستم عامل های 98 به بعد وجود دارد.

خوشبختانه در VC++2010 قرار هست این کتابخانه ها نیز به صورت static ارائه شوند تا بتوان آن ها را داخل فایل اجرایی قرار داد و نیازی به انتشار نباشد.

Jaguar
دوشنبه 21 بهمن 1387, 18:02 عصر
dll های MFC را می توان به صورت static تعریف کرد (در properties پروژه) اما visual C++runtime را خیر، یا dll های آن را باید در کنار فایل اجرایی کپی کنید یا آن ها را در سیستم نصب کنید.
منظور شما از visual C++runtime چیست؟ برای مثال کدام dll ها در Visual c++2008 منظورتان است؟

C Run-Time Libraries و Standard C++ Library میتوانند به صورت استاتیک لینک شوند. اما یک برنامه openmp بدون dll های مربوطه کار نخواهد کرد.



خوشبختانه در VC++2010 قرار هست این کتابخانه ها نیز به صورت static ارائه شوند تا بتوان آن ها را داخل فایل اجرایی قرار داد و نیازی به انتشار نباشد.

آیا می توانید مرجع به این گفته خود را هم قرار دهید؟

با تشکر

Nima_NF
سه شنبه 22 بهمن 1387, 01:14 صبح
C Run-Time Libraries و Standard C++ Library میتوانند به صورت استاتیک لینک شوند. اما یک برنامه openmp بدون dll های مربوطه کار نخواهد کرد.

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

چیزی که قرار هست انجام دهند این است که همانند قبل روش کپی کردن dll ها در کنار فایل اجرایی نیز در کنار سایر موارد پشتیبانی شود (برخلاف چند نسخه اخیر ++VC) و اجبار به استفاده و نصب کردن در Windows SxS نباشد:




Deployment:
New deployment model for Visual C++ Libraries (changed to not use Windows SxS configuration)


مواردی مثل:




- Deploying an application by using a setup project.
- Deploying an application to an application-local folder.
- Deploying an application by using the Visual C++ Redistributable Package.


http://social.msdn.microsoft.com/Forums/en/vs2010ctpcpp/thread/57846c64-8fa6-4d89-90d3-a46a80030596
http://blogs.msdn.com/vcblog/archive/2008/10/28/visual-studio-2010-ctp-released.aspx