undefined reference to

עתודאית

New member
undefined reference to

אני מקבלת את השגיאה הזאת בקומפילציה של קוד ב-C ב-UNIX למה?
 

DadleFish

New member
אנחנו אמורים לנחש, אני מבין?

תעלי את הקוד לכאן, ונראה. ככה אי אפשר לעזור לך.
 

DecayCell

New member
to... what?

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

עתודאית

New member
פרטים

אני לא אעלה את הקוד כי זה פרוייקט וזה כבר הגיע למעל 2000 שורות, אז בקצרה: יש לי קובץ בשם main.c בקובץ אני משתמשת פונ' בשם FileHandle הפונ' נמצאת בקובץ בשם general.c בקובץ main.c אני עושה: #include genral.h אני מקמפלת: gcc -Wall -lm main.c ומקבלת את השגיאה: /tmp/cc0TcXMB.o: In function `main': /tmp/cc0TcXMB.o(.text+0x298): undefined reference to `FileHandle' אגב, הפונ' main נמצאת בקובץ main.c זהו מקווה שעזרתי לכם לעזור לי
 

Zack DA

New member
את יכולה להעלות את קובץ ה- h

הרלוונטי ? לי זה נראה כאילו טעית בהגדרה עצמה או אפילו ב- spelling איפה שהוא. שימי לב, שטעות קטנה, אפילו כמו זאת שעשית בהודעה (בשורת ה- include) יכול להביא לך error כזה של unknown type (או במקרה שלנו undefined reference).
 

עתודאית

New member
אני לא אעלה את כל הקובץ אבל-

אני אצטט: main.c: ... #include "general.h" ... int main(int argc, char *argv[]) { ... database_ptr = FileHandle(file_name); ... } general.h: ... ROUTINE_LIST *FileHandle(FILE * file_name); ... general.c: ... ROUTINE_LIST *FileHandle(FILE *file_name) { ... } ... עשיתי copy paste מהקבצים
 

ahab

New member
נראה ששכחת לקמפל את general

הבעיה היא בשלב ה-linkage. בקובץ main.c את קוראת לפונקציה FileHandle, אבל כאשר הוא מנסה ליצור את הקובץ להרצה, הוא לא מוצא את המימוש של הפונקציה, מפני שביקשת שהוא יקמפל רק את main.c. זה שכתבת #include general.h רק נתן לקומפיילר להבין שקיימת פונקציה כזו (אחרת הוא היה צועק שהוא לא מכיר את הפונקציה). את צריכה לעשות אחד משני דברים: 1. לקמפל את general.c ביחד עם main.c: gcc -Wall -lm general.c main.c או.. 2. לקמפל את general.c לקובץ object בעזרת: gcc -c -Wall general.c -o general.o ואז לקמפל את main.c לקובץ executable (קובץ שניתן להריץ), בעזרת: gcc -Wall -lm main.c general.o
 

עתודאית

New member
וואו תודה

ידעתי שיש בעיה ב-linking אבל הפתרונות שהצעת לא היו מוכרים לי, שוב המון תודה!!!
 
למעלה