Header und C Files

OP #1894105
Lesenswert?

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
Angehängte Dateien:
#1894110
Lesenswert?

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.
#1894116
Lesenswert?

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.
OP #1894135
Lesenswert?

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 :-)
OP #1894141
Lesenswert?

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 :-)
OP #1894312
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren