עזרה בבקשה- שפת C

  • פותח הנושא Orbi
  • פורסם בתאריך

Orbi

New member
עזרה בבקשה- שפת C

כתבתי תוכנית קצרה שבה מערך תווים שמאותחל לגודל 1(ובו תו סוף מחרוזת), לאחר מכן קבלת תווים מהמשתמש והכנסתם למערך תוך הגדלתו ע"י realloc. כשאני מהדר בקישור מופיעות הטעויות הבאות: list.obj : error LNK2001: unresolved external symbol _While LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/list.exe : fatal error LNK1120: 2 unresolved externals אני מתאר לעצמי שזה קשור בכך שקבצי ה h. לא נמצאים או יותר נכון המהדר לא מוצא אותם כי הם כן נמצאים... התוכנית נמצאת באותה ספרייה עם הקבצים הנדרשים c:\...visual\vc98\include לא ברורה לי הבעיה, יש למישהו מושג?
 

זויברג

New member
אותיות ראשיות,

נראה לי שכתבת While (עם W גדולה) במקום while, ולכן המהדר חושב שזאת פונקציה ולא המילה השמורה while, אז הוא צועק שהוא לא מוצא את המימוש של הפונקציה While. כמו כן, בקשר לWinMain, יכול להיות שלא הגדרת את הפונקציה כמו שצריך? ההגדרה הנכונה נראית כך:
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)​
מקווה שזה פותר את הבעיות...
 
הפונקציה WinMain זה לא חלק מ-C

מי שלומד C מתחיל תוכניות ב ()main, מי שלומד את ה API של חלונות צריך שיהיה מודע לקיומה של WinMain אבל עדיין להתחיל תוכניות בפונקציה main.
 

זויברג

New member
אבל סתכל על השגיאה,

השגיאה שהוא קיבל אומרת שהמהדר מחפש את היישום של WinMain. כנראה שזאת תוכנית Win32 ואז המהדר יחפש את WinMain ולא את int main().
 

Orbi

New member
צודק אבל עדיין בעיות

צדקת לגבי האות הגדולה... הרגל מפסקל... עדיין הוא עושה לי בעייה, התחלתי את התוכנית כרגיל עם void main(), עכשיו כמובן ירדה ההתראה הראשונה שנבעה מהאות הגדולה אבל נישארו שתי ההתראות הבאות (לדעתי הן נובעות מאותה בעיה..): LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/list.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. תודה על התשובות המהירות.
 

Orbi

New member
אמנם רק 5 שעות אבל בכל זאת

מקפיץ... תודה על כל תשובה שהיא.
 

zagzagzag

New member
אם אתה עובד עם visual studio

ואתה כותב תוכנית C "רגילה" (ולא תוכנית עם קריאות לפונקציות של חלונות), אתה צריך לבחור ב-win32 console application כשאתה יוצר פרויקט. ואם אני זוכר נכון ואתה לומד באו"פ, יש הסברים לסביבת העבודה בסוף חוברת המטלות.
 

Orbi

New member
כן, קראתי..

בכל מיקרה כניראה כשהעתקתי ממשהו אחר שעשיתי פתחתי פרוייקט לא כמו שצריך, וזאת הייתה הטעות. תודה לך.
 
למעלה