PDA

View Full Version : خطا در اجرای برنامه با چند فایل



fkaz_fkaz
شنبه 10 فروردین 1387, 21:10 عصر
نمی دونم چرا وقتی برنامه های ++c رو سه تیکه(یه فایلh.ودو تا++c)می نویسم errorمی ده ولی وقتی همش رو به صورت یه فایل می نویسم مشکلی نیست.مثلا برنامه زیر::ناراحت:
نخندیدا من تازه کارم
کلاسی به نام (Rectangle)با خصیصه های(length)و (width) ایجاد کنید که مقدار پیش فرض هر یک از آنها 1 است.این کلاس توابع عضوی دارد که محیط perimeter و مساحت area مستطیل را محاسبه می کند و این کلاس دارای توابع نوشتن set و خواندن getبرای خصیصه های lengthو widthاست.توابع نوشتن set باید تحقیق کند که هم lengthو هم width اعداد اعشاری بزرگتر از 0.0و کوچکتر از 20.0 هستند.
[

Nima_NF
شنبه 10 فروردین 1387, 23:40 عصر
در فایل .h باید هر دو نوع تعریف شده در بالای فایل به یک اسم باشند تا فایل چندین مرتبه تکرار نشود: (حروف کوچک و بزرگ فرق می کند)



#ifndef RECTANGLE_H
#define RECTANGLE_H



در بعضی از خطوط نیز حروف به هم چسبیده اند



// Rectangle::Rectangle(double w,doublel)
Rectangle::Rectangle(double w , double l )

fkaz_fkaz
یک شنبه 11 فروردین 1387, 16:38 عصر
ببخشید من اینجا این اشتباه رو کردم.ولی در برنامه اصلی به همان صورتی که گفتید نوشته بودم.با این که هر سه تا در یک فایل قرار دارند باز هم خطای کامپایل میده.با این که در قسمت workspace هم هر سه فایل رو نشان میده.نخندینا ولی اینم errorهاش:

Compiling...
Rect.cpp
e:\microsoft visual studio\vc98\include\string(16) : error C2143: syntax error : missing ';' before ''template<''
e:\microsoft visual studio\vc98\include\string(16) : error C2501: '_STD_BEGIN' : missing storage-class or type specifiers
e:\microsoft visual studio\vc98\include\string(17) : error C2143: syntax error : missing ';' before '<'
e:\microsoft visual studio\vc98\include\string(17) : error C2433: 'basic_string' : 'inline' not permitted on data declarations
e:\microsoft visual studio\vc98\include\string(17) : error C2501: 'basic_string' : missing storage-class or type specifiers
* برای شلوغ نشدن حذف شد *
e:\microsoft visual studio\vc98\include\string(112) : error C2501: 'basic_istream' : missing storage-class or type specifiers
e:\microsoft visual studio\vc98\include\string(112) : error C2059: syntax error : ';'
e:\microsoft visual studio\vc98\include\string(112) : fatal error C1003: error count exceeds 100; stopping compilation
Error executing cl.exe.

Rect.exe - 102 error(s), 0 warning(s)

Nima_NF
یک شنبه 11 فروردین 1387, 19:00 عصر
همیشه ذکر کامپایلر مهم ترین بخش سوال می باشد که باید آن را قبل از هر چیزی ذکر کنید و این طور که معلوم است شما از VC++ 6 استفاده می کنید

برای اینکه برنامه ناقص به دست ما نرسد، لطفا خود برنامه را کلا Zip کرده و در پست اول به جای قطعه کد ها قرار دهید تا ناچار به رفع خطاهایی که غیر مرتبط به سوال هستند نشویم چرا که کد های شما هنوز هم اشکالاتی دارد مثلا در مورد تابع getLength که در هر جایی به یک شکل تعریف شده است مثلا getlngth
ضمنا وقتی کل برنامه را در یک فایل می نویسید فایل دیگری نباید در پروژه شما وجود داشته باشد

fkaz_fkaz
دوشنبه 12 فروردین 1387, 11:09 صبح
راستش من که نفهمیدم مشکل این vc++6 چیه.واسه همین vc++2005رو نصب کردم.حالا هر برنامه ای که می نویسم دو تا errorزیر رو میده.من فایل ها رو درست لینک کردم ولی این دو تا error از بین نمیره:ناراحت:


Linking...
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
Debug\rectangle.exe : fatal error LNK1120: 1 unresolved externals

fkaz_fkaz
جمعه 16 فروردین 1387, 21:54 عصر
دوستان کسی نمیدونه مشکل کجاست؟:متفکر:

Nima_NF
جمعه 16 فروردین 1387, 23:47 عصر
برای چندمین مرتبه، کل پروژه را Zip کنید، یعنی فایل های پروژه شما باید شامل vcproj و sln به همراه فایل کد های شما باشد (بقیه فایل ها را می توانید پاک کنید) تا بتوانیم تشخیص دهیم که آیا پروژه را اشتباه ساخته اید یا تغییری رخ داده است.

با حذف std ها و اضافه کردن کد زیر پروژه بدون مشکل اجرا شد:



using namespace std;


دقت داشته باشید که نوع پروژه باید win32 console application باشد و به صورت empty باید ساخته شود و نباید از نوع win32 project باشد که موجب خطای فوق می شود.