Moinsen :-), ich habe wieder mal ein problem :-). Also ich habe vor eine Funktion auszulagern. Dazu habe ich eine lcd.h erstellt und verschiedenste *.c files. So wenn ich nun in meinem Programm z.B. lcd_write('A'); aufrufe und dann das Programm compiliere kommt die Fehlermeldung: MPLINK 4.37, Linker Copyright (c) 1998-2010 Microchip Technology Inc. Error - could not find definition of symbol 'lcd_write' in file './main.o'. Errors : 1 Link step failed. Das Programm, das ich verwende ist MPLAB 8.56 oder so :-) und der compiler ist der MCC18 von Microchip. Im Anhang hab ich die lcd.h und die lcd_write.c. Ich glaube das es am Programm liegt oder das ich irgendetwas falsch eingestellt hab. Mit freundlichen Grüßen und schon mal mit bestem Dank Marco Hinrichs
Marco Hinrichs schrieb: > So wenn ich nun in meinem Programm z.B. lcd_write('A'); aufrufe und dann > das Programm compiliere kommt die Fehlermeldung: ********** > > MPLINK 4.37, Linker ****** > Copyright (c) 1998-2010 Microchip Technology Inc. > Error - could not find definition of symbol 'lcd_write' in file > './main.o'. > Errors : 1 > > Link step failed. Du musst alle deine *.c Files zu deinem Projekt hinzufügen. Wie das bei MPLAB geht weiß ich nicht. Aber typischerweise heißen die entsprechenden Menüpunkte 'Add File' oder 'Add existing File' oder so was in der Art und sind in der Projektverwaltung zu finden.
- hast ein return zuviel im "lcd_write", da gehört keines hin... - benutze in "lcd.h" mal öfter das Wörtchen "extern" sonst sieht es ok aus
Dennis schrieb: > - hast ein return zuviel im "lcd_write", da gehört keines hin... > - benutze in "lcd.h" mal öfter das Wörtchen "extern" > > sonst sieht es ok aus @Marco Lass dich nicht ins Boxhorn jagen. So wie du das hast passt das schon. Dein Problem ist ein Problem der Projektverwaltung. Die weiß noch nicht, dass lcd_write.c auch zum Projekt mit dazugehört. Und das ist im Moment dein Problem und nicht irgendwelche syntaktischen Dinge. C-Syntax zuständig ist der Compiler Zusammenbau der Einzelteile zum kompletten Programm ... Linker Dein Fehler kommt vom Linker und nicht vom Compiler.
Danke schon mal für die super duper schnellen antworten :-) Dann fang ich mal an :-) @ XXX Ja ich hab #include "lcd.h" in meiner main.c stehen :-) @ Dennis extern sind doch nur um eine Variable im Header für mehrere C files global zu machen oder täusche ich mich ? @ Karl heinz Ich hatte auch schon den Linker unter verdacht und versuche das mal, die C files einzubinden. Melde mich wenn ich weiteres in Erfahrung gebracht habe :-)
So ich habe es gefunden :-) War wirklich in der Projetverwaltung, wo man auswählen kann ob die relativ oder absolut sind :-) Das ging echt leicht :-) aber ich hab in den c files vergessen delays.h zu inkludieren :-) aber das ist leicht gemacht. Danke Karl heinz für diesen Tipp :-). Nach stunden des Scheiterns, denkt man nicht mehr an solch leichte Lösungen :-) Gruß, der Marco :-)
Marco Hinrichs schrieb: > Danke Karl heinz für diesen Tipp :-). Nach stunden des Scheiterns, denkt > man nicht mehr an solch leichte Lösungen :-) Es hilft, wenn man Fehlermeldungen liest und auch mit den Augen in der Fehlermeldung nach links oder nach oben schwenkt um zu sehen, von wem sie kommt.
Karl heinz Buchegger schrieb: > Es hilft, wenn man Fehlermeldungen liest und auch mit den Augen in der > Fehlermeldung nach links oder nach oben schwenkt um zu sehen, von wem > sie kommt. Stimmt da steht, dass der Fehler vom Linker kommt. Trotzdem hatte ich das problem, dass ich nicht wusste wie ich diesen Fehler beheben konnte. :-) Aber jetzt weiß ich es.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.