Forum: Mikrocontroller und Digitale Elektronik undefined reference to


von Ralf G. (sense)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich hab hier ein kleines großes Problem. Ich hab verschiedene 
Codeschnipsel aus dem Forum hier zusammengefügt und bisschen außenherum 
was geschrieben um eine LCD Uhr zu erhalten. Das LCD ist ein DOGM163 und 
die RTC ein DS1302, dass funktioniert schon wunderbar inkl einstellen, 
hat wunderbar compiled. Jetzt will ich noch eine Temperaturanzeige mit 
drin haben mit einem DS1820, da bin ich hier im Forum auch fündig 
geworden und habe das eingebaut. Nun habe ich das Problem, dass das 
AVR-Studio mir das ganze nicht compiled und ein undefined reference 
entgegenschmeißt(bzw 3) ich versteh aber nicht warum und wieso, ich hab 
den Temperaturteil genauso wie die anderen Teile eingefügt aber es 
funktioniert nicht.

Vllt. findet ihr ja meinen Fehler, Sourcecode hängt im Anhang.

von blubb (Gast)


Lesenswert?

meist sind es aufrufe von funktionen die der compiler zu dieser zeit 
noch nicht kennt

du musst dafür sorgen das variablen und funktionsprototypen bekannt sind

von holger (Gast)


Lesenswert?

>undefined reference to

Die ganze Fehlermeldung posten.

von Ralf G. (sense)


Lesenswert?

Ja stimmt das mit der Fehlermeldung kam mir auch gerade... sry

Also die Prototypen stehen in den Headerfiles und die hat der Compiler 
zur Verfügung. Die einzelnen *.o Dateien kann ich alle ohne Fehler 
erstellen aber der Link zur *.hex schlägt dann fehl.

Hier die Fehlermeldung:
1
Build started 9.4.2010 at 22:18:38
2
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d  -c  ../main.c
3
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d  -c  ../lcd.c
4
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT ds1202.o -MF dep/ds1202.o.d  -c  ../ds1202.c
5
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 1WIRE.o -MF dep/1WIRE.o.d  -c  ../1WIRE.C
6
cc1plus.exe: warning: command line option "-std=gnu99" is valid for C/ObjC but not for C++
7
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT DELAY.o -MF dep/DELAY.o.d  -c  ../DELAY.C
8
cc1plus.exe: warning: command line option "-std=gnu99" is valid for C/ObjC but not for C++
9
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT TEMPMEAS.o -MF dep/TEMPMEAS.o.d  -c  ../TEMPMEAS.C
10
cc1plus.exe: warning: command line option "-std=gnu99" is valid for C/ObjC but not for C++
11
avr-gcc  -mmcu=attiny84 -Wall -gdwarf-2 -std=gnu99   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT TIMEBASE.o -MF dep/TIMEBASE.o.d  -c  ../TIMEBASE.C
12
cc1plus.exe: warning: command line option "-std=gnu99" is valid for C/ObjC but not for C++
13
avr-gcc -mmcu=attiny84 -Wl,-Map=LCD_Clock.map main.o lcd.o ds1202.o 1WIRE.o DELAY.o TEMPMEAS.o TIMEBASE.o     -o LCD_Clock.elf
14
main.o: In function `main':
15
D:\Daten\AVR-Projects\LCD_Clock\default/../main.c:28: undefined reference to `init_timer'
16
D:\Daten\AVR-Projects\LCD_Clock\default/../main.c:89: undefined reference to `start_meas'
17
D:\Daten\AVR-Projects\LCD_Clock\default/../main.c:94: undefined reference to `read_meas'
18
make: *** [LCD_Clock.elf] Error 1
19
Build failed with 3 errors and 4 warnings...

P.S.Controller ist ein ATTiny 84

von g457 (Gast)


Lesenswert?

1. alle Dateierweiterungen 'klein' machen
2. alles #include anpassen
3. compilieren und linken
4. in Zukunft besser auf die Namen achten

von Ralf G. (sense)


Lesenswert?

Vielen Danke für die schnelle Hilfe, ich hab bestimmt schon 2Stunden 
gesucht, aber das die Erweiterung *.H daran schuld ist, da bin ich nicht 
draufgekommen. Jetzt funktionierts :)

von Karl H. (kbuchegg)


Lesenswert?

Ralf G. schrieb:
> Vielen Danke für die schnelle Hilfe, ich hab bestimmt schon 2Stunden
> gesucht, aber das die Erweiterung *.H daran schuld ist, da bin ich nicht
> draufgekommen. Jetzt funktionierts :)


Die Erweiterung *.H ist es nicht :-)

Diese Warnung
cc1plus.exe: warning: command line option "-std=gnu99" is valid for 
C/ObjC but not for C++

sagt dir gar nichts?

1WIRE.C wird im C++ Modus kompiliert und nicht im C Modus. Ditto für 
alle anderen *.C

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
Noch kein Account? Hier anmelden.