Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe zu : undefined reference to `com74hc595_init'


von Markus P. (sebastianwurst)


Angehängte Dateien:

Lesenswert?

Hallo,
ich benutze Neuerdings das Programmers Notepad, vorher hatte ich AVR 
Studio da klappte alles irgendwie besser.... Naja.

Ich habe zwei Files eingefügt, einmal die com74hc595.c und die Header 
Datei .h. Wenn ich jetzt übersetze wird kein Fehler deklariert.
Rufe ich nun die in der .h vorhandene void auf com74hc595_init(); kommt 
eine Fehlermeldung.
Ps: In AVR Studio läuft es.

Auszug aus der Header Datei:
1
// initialize the mikrocontroller
2
extern void com74hc595_init();

Das ist die Fehlermeldung
1
Linking: Hexfiles/Webserver_MEGA644.elf
2
avr-gcc -mmcu=atmega644 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 main.o usart.o stack.o timer.o cmd.o base64.o networkcard/enc28j60.o networkcard/rtl8019.o httpd.o telnetd.o ntp.o lcd.o udp_lcd.o wol.o http_get.o analog.o sendmail.o camera/cam.o camera/servo.o dnsc.o dhcpc.o   --output Hexfiles/Webserver_MEGA644.elf -Wl,-Map=Hexfiles/Webserver_MEGA644.map,--cref -lm
3
main.o: In function `main':
4
d:\microcontroller\programm\webserver\eth_m32_ex_soft\newstack1_2_5/main.c:231: undefined reference to `com74hc595_init'
5
make.exe: *** [Hexfiles/Webserver_MEGA644.elf] Error 1


Kann mir einer Helfen ? Was kann ich noch falsch machen ?

von Stefan E. (sternst)


Lesenswert?

Markus P. schrieb:
> Rufe ich nun die in der .h vorhandene void auf com74hc595_init(); kommt
> eine Fehlermeldung.

Nicht die Funktion ist in der .h vorhanden (Definition), sondern nur die 
Info, wie die Funktion verwendet/aufgerufen wird (Deklaration). Die 
eigentliche Funktion fehlt dem Linker, daher die Fehlermeldung.

Markus P. schrieb:
> Das ist die Fehlermeldung

Und siehst du in der Zeile, die mit "avr-gcc" beginnt, die ganzen .o 
Dateien? Darunter müsste auch com74hc595.o sein, damit es funktioniert. 
Um das zu erreichen, musst du com74hc595.c im Makefile mit eintragen.

von Markus P. (sebastianwurst)


Angehängte Dateien:

Lesenswert?

Vielen Dank schonmal das du dich um mich kümmerst ;-( bin am 
verzweifeln.

> Nicht die Funktion ist in der .h vorhanden (Definition), sondern nur die
> Info, wie die Funktion verwendet/aufgerufen wird (Deklaration). Die
> eigentliche Funktion fehlt dem Linker, daher die Fehlermeldung
Du hast Recht.

Das macht das AVR Studio ja glaub anders. Der erzeugt das Makefile neu, 
oder trägt es automatisch mit ein. Wenn mich nicht alles täuscht.?

Also müsst das so richtig sein, oder ? Ein Fehler kommt dann auch nicht 
mehr.
1
# If there is more than one source file, append them above, or modify and
2
# uncomment the following:
3
SRC =  main.c usart.c stack.c timer.c cmd.c base64.c
4
5
SRC += networkcard/enc28j60.c networkcard/rtl8019.c
6
7
SRC += httpd.c telnetd.c ntp.c lcd.c udp_lcd.c wol.c
8
9
SRC += http_get.c analog.c sendmail.c
10
11
SRC += camera/cam.c camera/servo.c
12
13
SRC += dnsc.c dhcpc.c
14
15
SRC += com74hc595.c
16
17
# List Assembler source files here.
18
# Make them always end in a capital .S.  Files ending in a lowercase .s
19
# will not be considered source files but generated files (assembler
20
# output from the compiler), and will be deleted upon "make clean"!

Vielen Dank.

von Stefan E. (sternst)


Lesenswert?

Markus P. schrieb:
> Das macht das AVR Studio ja glaub anders. Der erzeugt das Makefile neu,
> oder trägt es automatisch mit ein. Wenn mich nicht alles täuscht.?

Genau.

Markus P. schrieb:
> Also müsst das so richtig sein, oder ?

Ja.

von Markus P. (sebastianwurst)


Lesenswert?

Bestens. Schöne Ostern noch....

von Markus P. (sebastianwurst)


Lesenswert?

Vielleicht eine Sache noch ! Gibt es sonst noch irgendetwas was ich 
Programmers Notepad beachten, einstellen sollte ?

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.