לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 11-07-2010, 10:43
צלמית המשתמש של Zorro26
  Zorro26 Zorro26 אינו מחובר  
 
חבר מתאריך: 07.04.04
הודעות: 552
בעיית קימפול תוכנית C עם פרוצדורה באסמבלי

הי,

אני משתמש בסביבת פיתוח Turbo C++ 4.0 תחת מערכת הפעלה DOS.
כתבתי תוכנית בשפת C עם קריאה לפרוצדורה (פונקציה) בשפת אסמבלי בקובץ ASM.
השגיאה שאני מקבל:
Linker error: Undefined symbol _Add_Ext in module ..\PROJECTS\ADD.C in
module ADD.OBJ

להלן הקוד ב Assembly

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


להלן הקוד ב C

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


ניסיתי לבצע Compile לבד ללא Build All (ללא Link) וזה מה שאני מקבל:
call to function 'Add_Ext' with no prototype in function main

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

אם אני מנסה לעשות קומפילציה דרך Build All (כולל קומפילציה+link+make) זה מה שאני מקבל:
Linker error: Undefined symbol _Add_Ext in module ..\PROJECTS\ADD.C in
module ADD.OBJ

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

להלן מה שעשיתי לפני כן ותקנו אותי בבקשה אם הצעדים אינם נכונים:
1. קימפלתי את התוכנית ADD_EXT.ASM בעזרת MASM ADD_EXT.ASM
לא ביצעתי LINK כך שנוצר לי רק קובץ ADD_EXT.OBJ ללא ה- EXE שלו

2. כל הקבצים כולם ללא יוצא מן הכלל נמצאים באותה תיקייה כך שלא חסר כלום

3. אין בכלל בעיה עם ה < include <stdio.h מאחר ותכנית רגילה כמו hello world
הוא מקמפל ללא בעיה, כך שאת ההדר הוא מזהה יופי.

מודה לכם מראש.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה כי ביתי בית תפילה יקרא לכל העמים תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 11-07-2010, 11:02
צלמית המשתמש של Zorro26
  Zorro26 Zorro26 אינו מחובר  
 
חבר מתאריך: 07.04.04
הודעות: 552
בתגובה להודעה מספר 2 שנכתבה על ידי RP. שמתחילה ב "אני ממש לא מבין בזה, אבל אתה..."

ציטוט:
במקור נכתב על ידי RP.
אני ממש לא מבין בזה, אבל אתה לא אמור להגדיר את _Add_Ext כ- Entry?
בדיוק כמו שהגדרת את first (למשל) כ- EXTERN.


לא, אני מבצע את ההוראות מספר תכנות (פיתוח מנועים תלת-מימדיים).
הפרק מתחיל בתכנות C + Assmebly מתקופת מערכת DOS.

בספר לא היה מצויין בכלל השורה הזו ()extern Add_Ext
בדקתי באינטרנט ומסתבר שחייבים להוסיף את השורה הזו על מנת לקרוא לפרצודורה חיצונית באסמבלי. אחרת הוקמפיילר יחשוב כי מדובר בפונקציה פנימית לכל דבר.
ואני בסה"כ מנסה לקרוא לתוכנית חיצונית שקימפלתי באסמבלי.

תודה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה כי ביתי בית תפילה יקרא לכל העמים תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


נערך לאחרונה ע"י Zorro26 בתאריך 11-07-2010 בשעה 11:03. סיבה: תיקון
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 11-07-2010, 18:41
צלמית המשתמש של Zorro26
  Zorro26 Zorro26 אינו מחובר  
 
חבר מתאריך: 07.04.04
הודעות: 552
בתגובה להודעה מספר 8 שנכתבה על ידי פסטן שמתחילה ב "בוא נעשה סדר: [list=1] [*]השם..."

ציטוט:
במקור נכתב על ידי פסטן
בוא נעשה סדר:
  1. השם של הפונקציה צריך להיות זהה. את המשמעות של המשפט "בתוך הקובץ Add.C הקריאה היא לקובץ אסמבלי ולא למה שיש בתוכו כך שזה לא משנה" אני לא מבין, ואני לא בטוח שבכלל יש לו משמעות הגיונית. אין ללינקר דרך לנחש שכשבקובץ add.c קוראים לפונקציה Add_Ext הכוונה לפונקציה _Add_Ext בקובץ Add_Ext.asm. באותה מידה שם הפונקציה באסמבלי יכל להיות Silly_Name_6275.
  2. תנסה לקמפל וללנקג' דרך שורת הפקודה, לבד. לא דרך ה-IDE.
  3. אני לא בטוח שהקבצי OBJ של MASM מתאימים ללינקר של TC. תנסה לבנות את האסמבלי עם TASM, או לפחות תוודא בגוגל שהלינקר של TC תואם את MASM (אולי יש פרמטרים שקבועים איזה סוג של קובץ פלט לייצר)



1) הבנתי לגבי הקו התחתון, בדקתי בגוגל ומסתבר שהקומפיילר של בורלד מוסיף את הקו
התחתון בהודעות שגיאה מסוג זה, לא מובן לי למה... כאשר ניסיתי בשביל הבדיקה להוסיף

קו תחתון בפונקציות הוא הכפיל לי בהודעת שגיאה את הקו התחתון לבסוף החזרתי את

הפונקציות לקדמותם ללא קו תחתון.


2) להלן התוצאות עם TASM וע"פי צילומי המסך של התוכנית באסמבלי לא מובן לי מדוע
אני מקבל את השגיאות הללו מאחר ואותם שגיאות קיבלתי גם עם MASM.
משהו בהגדרת המשתנים כנראה באסמבלי לא תקין אך ניתן לראות מצילום המסך שסיפקתי
למעלה שהתוכנית באסמבלי כתובה כהלכה. עובדה שזה עובר קומפילציה ב TASM וגם ב

MASM




תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה כי ביתי בית תפילה יקרא לכל העמים תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 01:13

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר