PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک فوری



suznak
22-03-2012, 02:57
من یه برنامه ledنوشتم با lpc2132 خیلی سادست فقط ledرو خاموش و روشن می کنه اما تو کیل خطا های زیر رو داره چکار باید بکنم
linking...
a.axf: Error: L6218E: Undefined symbol ledInit (referred from a.o).
a.axf: Error: L6218E: Undefined symbol ledoff (referred from a.o).
a.axf: Error: L6218E: Undefined symbol ledon (referred from a.o).
a.axf: Error: L6218E: Undefined symbol switchInit (referred from a.o).
a.axf: Error: L6218E: Undefined symbol switchgetinput (referred from a.o).

sadmonew
22-03-2012, 03:02
سلام مهندس سال نو شما مبارك
در مورد اين نوع خطا ها تو انجمن خيلي بحث شده. يه سرچ ميكردين مطمئنا به نتيجه ميرسيدين.
لطفا پروژتون رو اينجا بذاريد تا بهتر بتونيم كمكتون كنيم و خطاهارو با هم برطرف كنيم.
اين خطاها هم به تعريف نشدن توابعي مثل ledInit تو برنامتون مربوط ميشه.

suznak
23-03-2012, 01:10
سال نو شما هم مبارک

esisafa
23-03-2012, 01:47
#include "config.h"
#include "led.h"
#include "switch.h"

ببینین شما این هدر ها رو اینکلود کردین ولی خوب باید خود فایلهاشون هم به برنامه اضافه کنین.

شما باید فایلهای مورد نظر رو از قسمت project----> manage-----> components این فایلها رو که در پوشه پروژه کپی کردین ، اضافه کنین

suznak
23-03-2012, 03:10
بیشتر توضیح دهید تازه کارم

alireza10471
23-03-2012, 03:39
بیشتر توضیح دهید تازه کارم
برای اجرای دستورات برنامه ای که نوشته می شود، کامپایلر، تمام سورس ها و هدرهای برنامه را که زیر برنامه ها در آنها نوشته شده است را به برنامه اصلی اضافه می کند (صحیحتر این است که بگویم بخش هایی که مورد نیاز برنامه اصلی هستند به برنامه اصلی اضافه می گردد).
پیغام خطایی که در برنامه شما نمایش داده میشود بدین مفهوم است که کامپایلر قادر به اضافه کردن تعدادی از هدرها و بالطبع آن تعدادی از سورس های تعریف شده در برنامه اصلی نیست.
در ابتدای برنامه ای که نوشتید تعدادی هدر (Header) به برنامه اضافه کرده اید که عبارتند از:

#include "config.h"
#include "led.h"
#include "switch.h"بنابراین بایستی هدر فایلها و سورسهای موارد ذکر شده را در فولدری که پروژه در آن ساخته شده است کپی کنید.
نکته آموزشی قابل توجه این است که زمانی که از علامت "" استفاده می گردد کامپایلر به دنبال هدر های برنامه در فولدر پروژه می گردد و اگر از علامت <> استفاده شود کامپایلر به دنبال این هدر ها در مسیر نصب خود کامپایلر خواهد گشت. بنابراین مفهوم دو دستور زیر برای کامپایلر متفاوت خواهد بود:

#include "config.h"
#include <config.h>

suznak
23-03-2012, 04:21
اگه فایل هدر رو در برنامه ای بریزم آیا لازم است حتما فایل سورس برنامه رو بریزم؟ فایل سورس رو کحا بریزم؟

alireza10471
23-03-2012, 11:26
اگه فایل هدر رو در برنامه ای بریزم آیا لازم است حتما فایل سورس برنامه رو بریزم؟ فایل سورس رو کحا بریزم؟
بله، بایستی فایل سورس هدر های اضافه شده به برنامه به پروژه اضافه گردد.
برای انجام این کار در کامپایلر KEIL بایستی از منوی Components, Environment, books... استفاده کنید که برای این منظور به ترتیب از منو های زیر استفاده کنید:

Project|Manage|Components, Environment,Books...

suznak
24-03-2012, 11:24
compiling led.c

E:\program file\ARM\INC\Philips\config.h(25): warning: #1295-D: Deprecated declaration vpbdivinit - give arg types
E:\program file\ARM\INC\Philips\config.h(27): warning: #1-D: last line of file ends without a newline
led.c(9): error: #20: identifier "led_dir" is undefined
led.c(9): error: #20: identifier "led_red" is undefined
led.c(14): error: #20: identifier "led_clr" is undefined
led.c(14): error: #20: identifier "led_red" is undefined
led.c(19): error: #20: identifier "led_set" is undefined
led.c(19): error: #20: identifier "led_red" is undefined
led.c(23): warning: #1-D: last line of file ends without a newline
compiling config.c...
E:\program file\ARM\INC\Philips\config.h(25): warning: #1295-D: Deprecated declaration vpbdivinit - give arg types
E:\program file\ARM\INC\Philips\config.h(27): warning: #1-D: last line of file ends without a newline
config.c(11): error: #20: identifier "pllcfg_bit" is undefined
config.c(15): error: #20: identifier "pllfeed_bit" is undefined
config.c(19): error: #20: identifier "pllcon_bit" is undefined
config.c(26): error: #20: identifier "pllstat_bit" is undefined
config.c(37): error: #20: identifier "vpbdiv_bit" is undefined
config.c(42): warning: #1-D: last line of file ends without a newline
compiling switch.c...
E:\program file\ARM\INC\Philips\config.h(25): warning: #1295-D: Deprecated declaration vpbdivinit - give arg types
E:\program file\ARM\INC\Philips\config.h(27): warning: #1-D: last line of file ends without a newline
switch.c(11): error: #20: identifier "i01dir" is undefined
switch.c(15): error: #20: identifier "i01pin" is undefined
switch.c(23): warning: #1-D: last line of file ends without a newline
Target not created

suznak
24-03-2012, 11:26
این بار خطا های بالا را داد ببخشید دیگه تازه کارم

alireza10471
24-03-2012, 13:47
این بار خطا های بالا را داد ببخشید دیگه تازه کارم
یکی از اهداف این انجمن آموزش و یادگیری است و شما می توانید هر مشکلی که برای شما ایجاد میشه را مطرح کنید، پس از این جهت راحت هر سوالی که دارید بگید.
خب این دفعه یک مرحله جلوتر آمدید و این بار فایل های سورس به کامپایلر معرفی شده است و کامپایلر آن ها را اجرا می کند. به این موارد توجه کنید:
1- اگر به خطاها دقت کنید، در ابتدای هر دسته از خطاها بیان می شود که این خطا مربوط به اجرای کدام فایل می باشد، به عنوان مثال:

ompiling led.c

E:\program file\ARM\INC\Philips\config.h(25): warning: #1295-D: Deprecated declaration vpbdivinit - give arg types
E:\program file\ARM\INC\Philips\config.h(27): warning: #1-D: last line of file ends without a newline
led.c(9): error: #20: identifier "led_dir" is undefined
led.c(9): error: #20: identifier "led_red" is undefined
led.c(14): error: #20: identifier "led_clr" is undefined
led.c(14): error: #20: identifier "led_red" is undefined
led.c(19): error: #20: identifier "led_set" is undefined
led.c(19): error: #20: identifier "led_red" is undefined
led.c(23): warning: #1-D: last line of file ends without a newline
بنابراین دسته خطاهای ایجاد شده مربوط به فایل led.c می باشد.
2- error های ایجاد شده نشان می دهد که در هر کدام از فایل های سورس، تعدادی از متغیر ها به برنامه اضافه نمی گردد و از این رو کامپایلر آن ها را تعریف نشده معرفی می کند. پس به عنوان مثال به فایل led.c را باز کنید و ابتدای آن را بررسی کنید تا متوجه شوید که کدام هدر ها در ابتدای آن اضافه گردیده است. با توجه به مطالبی که در پست های قبلی اشاره شد فایل های هدر برنامه را در فولدر پروژه کپی کنید و اگر در ابتدای برنامه
#include <led.h> وجود دارد آنرا به
#include "led.h" تبدیل کنید تا کامپایلر هدرهای برنامه را از فولدر پروژه کپی کند.