PDA

View Full Version : سوال: کامپایل برنامه



soorena
سه شنبه 04 بهمن 1390, 09:50 صبح
سلام

من یک مشکل خیلی‌ عجیب دارم که البته شاید هم عادی هستش ولی‌ برای من عجیبه.

من چند سال پیش یک برنامه فشرده سازی هافمن با cpp در لینوکس نوشته بودم و با ++g هم کامپایل می‌شه و خیلی‌ هم خوب کار می‌کنه. همین برنامه با mingw تحت ویندوز هم کامپایل می‌شه و هیچ مشکلی‌ نداره.(پس از این بابت که برنامه درست نوشته شده و استاندارد هم هستش شک نکنید.). حالا می‌خوام یک gui برای این برنامه بسازم و البته می‌خوام به جای+gtk از کلاس‌های mfc در vc++2008 استفاده کنم.من خیلی‌ راحت کلاس‌ها رو به پروژه اضافه می‌کنم و برنامه هم خیلی‌ راحت کامپایل می‌شه و کار می‌کنه حالا مشکل اینجاست که برنامه اشتباه کار می‌کنه!!!!!

می‌خوام بدونم مگه استاندارد‌ها تو vc++2008 و ++g فرق می‌کنه؟؟؟. برنامه من از کتابخانه‌های استاندارد استفاده می‌کنه که با mingw تحت ویندوز هم کامپایل می‌شه و درست کار می‌کنه پس چرا با vc++2008 درست کامپایل نمی‌شه؟؟؟؟؟

من فایل‌ها رو میزارم اگه کسی‌ دوست داشت امتحان کنه....
http://maroofi.persiangig.com/huffman.h
http://maroofi.persiangig.com/huffman.cpp
http://maroofi.persiangig.com/bitio/bitio.h
http://maroofi.persiangig.com/bitio/bitio.cpp
کلاس فشرده سازی huffman برای کار کردن نیاز به bitio داره و فقط کافیه که این کلاس‌ها رو به یک پروژه اضافه کنید.من فقط می‌خوام مطمئن بشم که اینا با vc++2008 درست کامپایل میشن یا نه.

اگه کسی‌ میتون کامپایل شدشرو با vc++2008 برام بده هم ممنون میشم.
اینم روش استفاده از کلاس:

huffman instance1("inputFileName","outputFileName");
instance1.encode();
اول برنامه هم حتما باید

#include"huffman.h"
رو بگذارید.

_hamid
سه شنبه 04 بهمن 1390, 20:19 عصر
راستش من الان ویندوز ندارم ولی خوب اگر مشکلتون فقط بین کامپایلری هست شاید بین libstd++ و VC STL تفاوت هست.
ولی خوب trace کردی ببینی کجا دقیقا مشکل داره؟

soorena
چهارشنبه 05 بهمن 1390, 01:25 صبح
سلام

ممنون از پاسختون. مشکل دقیقا همینجاست ،اگر تفاوتی هست این تفاوت‌ها کجاست یعنی یه مرجع برای این تفاوت‌ها نیست؟

اصلا اگه استاندارد هستن برای چی‌ تفاوت دارن؟

اگه تفاوت دارن چرا کامپایل میشن؟

متأسفانه من وقت نمیکنمtrace کنم...تو اولین فرصت البته این کار رو می‌کنم.

به هر حال این باعث شد که کاملا از vc++2008 و mfc دل‌سرد بشم و با همون +gtk براش gui بسازم.

_hamid
چهارشنبه 05 بهمن 1390, 07:44 صبح
ansi/iso برای کامپایلر های به عنوان مرجع درست شده ولی خوب هر کامپایلری (هر نوع طراحی از C++) حق داره هرجور خودش دلش می خواد این جزئیات رو پیاده سازی کنند.
ممکنه بین پیاده سازی کتابخانه ها فرقی باشه اما فکر نمی کنم باعث شه که کد ها کامپایل نشن.
ممنکنه توی رفتارشون (مثل مشکل شما) ایراد وجود داشته باشه که البته این به ندرت پیش میاد!

soorena
چهارشنبه 05 بهمن 1390, 13:03 عصر
مشکل پیدا شد...trace کردم اختلاف تو باز کردن یک فایل بود ...vc++2008 وقتی‌ فایل رو برای بار دوم باز می‌کنه کرسر رو به اول منتقل نمیکرد که من خودم دستی‌ این کارو کردم.

به هر حال به این نتیجه رسیدم که کلا اگه قراره تو ویندوز برنامه‌نویسی بکنیم بهتره از همون سی‌ شارپ یا کلا .net استفاده کنیم یا فقط از native استفاده کنیم.به نظرم ترکیبش اصلا کار درستی‌ نیست.