Forum: Mikrocontroller und Digitale Elektronik undefined reference


von Basti (Gast)


Lesenswert?

Hallo zusammen,

bin ziemlich am verzweifeln im Moment, ich hoffe mir kann jemand bei dem 
folgenden Problem helfen.
Und zwar habe ich mir ein Beispiel Projekt runtergeladen zu einem 
Nanoloc-board. Danach hab ich mir ein neues Projekt in AVR_Studio 
angelegt, alle *.h Dateien eingbunden. Leider bekomme ich jetzt sehr 
viele Fehlermeldungen bezüglich undefined reference von Funktionen.

(main.o(.text+0x42):../main.c:90: undefined reference to `console_init')

Jedoch kann ich nicht verstehen warum er die nicht findet, das müsste 
alles passen.
Ich hab jetzt schon gelesen, dass das mit dem makefile zusammen hängt. 
Leider hab ich kein "original" makefile, jedoch sollte nach meinem 
Verständnis das doch automatisch bei AVR_Studio gebildet werden. Kann 
ich da irgendwelche Pfade noch "zu Fuß" einfügen?

main.o(.text+0x42):../main.c:90: undefined reference to `console_init'

Wär wirklich sehr nett, wenn mir einer helfen könnte. Das Problem haben 
bestimmt schon mehrere gehabt.

Danke

von Johannes M. (johnny-m)


Lesenswert?

Zu den meisten nicht systemeigenen Headerdateien gehört auch eine 
(gleichnamige) .c-Datei, die dem Makefile hinzugefügt werden muss!

Das Makefile macht AVRStudio zwar automatisch, aber die Einstellungen 
musst Du selber vornehmen. Dazu gehört auch, dass alle Quelldateien 
dem Projekt hinzugefügt werden müssen (über den Punkt "Source Files" im 
"Projektbaum").

von Michael U. (amiga)


Lesenswert?

Hallo,

macht AVR-Studio mit GCC eigentlich automatisch, wenn man sowohl die .h 
als auch die .c Dateien dem Projekt hinzugefügt hat.

PS. ich war zu langsam... ;-(
Gruß aus Berlin
Michael

von Basti (Gast)


Lesenswert?

Vielen Dank, mit dem Einbinden der *.c - Files hat es geklappt!
Jetzt nur noch die anderen Fehler beseitigen:-)

von Tommy T. (tommy776)


Lesenswert?

hallo.
ich stehe auch grad vor einem "undefined reference" problem:
(ich nutze das AVR-Studio 4.13 und WinAVR)
...
void appEndDeviceTaskHandler(void)
{
 batmonReq.voltage = RF_1V85_BAT_VTG;// setze Schwellwert auf 1,85V
 batmonReq.RF_BatteryMonConf = RF_BatteryMonConf;// 
Confirm-Handler-Aufruf
 RF_BatteryMonReq(&batmonReq);
...
}

mein problem:
die funktion "RF_BatteryMonReq(&batmonReq);"
die dazu dient die werte zu setzen und bei erfolg den confirm-handler 
aufzurufen bringt mir den fehler:

D:\Meshnetics Version 2.3.0\ZDK_Complete\Sample 
Applications\kranhaken/kranenddevice.c:33: undefined reference to 
`RF_BatteryMonReq'
make: *** [link] Error 1
Build failed with 1 errors and 0 warnings...

die funktionen sind in der header rfBattery.h deklariert die ich auch in 
mein projekt eingebunden habe.die libs stehen auch alle in meinem 
makefile!

woran könnte es also liegen das der fehler auftritt???

von Karl H. (kbuchegg)


Lesenswert?

Es gibt nur 2 Möglichkeiten

* entweder du hast einen Tippfehler irgendwo im Namen
  (Aufruf mit Header File mit Source Code File in der die Funktion
   enthalten ist vergleichen)

* oder du hast eben nicht alles zu deinem Projekt hinzugefügt

von Oliver (Gast)


Lesenswert?

>die libs stehen auch alle in meinem makefile!

Hast du das Studio auf externes makefile umgestellt?

In der Default-Einstellung nutzt das Studio sein eigenes makefile, und 
kümmert sich nicht darum, was in deinem makefile steht. Da müsstest du 
die libs in den Projektoptionen hinzufügen.

Oliver

von Tommy T. (tommy776)


Lesenswert?

@ Karl heinz Buchegger:

einen Tippfehler kann ich auf jedenfall ausschließen.hab alles in ruhe 
durchgeschaut und keinen gefunden.

@Oliver:

ja ich nutze ein externes makefile.

bin gerade echt ratlos!? :(

von Oliver (Gast)


Lesenswert?

>ja ich nutze ein externes makefile.

Na, dann zeigs doch mal. Und schreib dazu, in welchen Pfaden deine libs 
zu finden sind.

Oder trag deine libpfade und libs in den Projektoptionen ein, und lass 
das Studio das makefile erstellen.

Oliver

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.