Forum: Mikrocontroller und Digitale Elektronik undefined referece in AtmelStudio 6


von Johannes (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich fange gerade mit der Software für ein kleines Projekt an. Dazu 
benutze ich eine Lib die ich bereits öfters im Einsatz hatte, aber noch 
unter AVR Studio 5. Bisher hatte ich nie Probleme, aber entweder ist mir 
bei den Includes und Definitionen im Hauptprogramm (siehe 
Grow-O-Matic.c) ein blöder Fehler unterlaufen, oder aber beim linken 
läuft etwas da ich die Funktionen

ds1820_init()
ds1820_read_temp()

nicht aufrufen kann. Da beim Compilieren jedesmal der Fehler Undefined 
reference erscheint.

Hier die Meldungen aus dem AtmelStudio 6
1
------ Rebuild All started: Project: Grow-O-Matic, Configuration: Debug AVR ------
2
Build started.
3
Project "Grow-O-Matic.cproj" (ReBuild target(s)):
4
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
5
Target "CoreRebuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\Vs\Compiler.targets" from project "F:\Atmel Studio\Grow-O-Matic\Grow-O-Matic\Grow-O-Matic.cproj" (target "ReBuild" depends on it):
6
  Task "RunCompilerTask"
7
    C:\Program Files (x86)\Atmel\Atmel Studio 6.0\make\make.exe clean all 
8
    rm -rf  Grow-O-Matic.o Grow-O-Matic.d  
9
    rm -rf "Grow-O-Matic.elf" "Grow-O-Matic.a" "Grow-O-Matic.hex" "Grow-O-Matic.lss" "Grow-O-Matic.eep" "Grow-O-Matic.map"
10
    Building file: .././Grow-O-Matic.c
11
    Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2
12
    "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "Grow-O-Matic.d" -MT"Grow-O-Matic.d" -MT"Grow-O-Matic.o"  -mmcu=attiny13   -o"Grow-O-Matic.o" ".././Grow-O-Matic.c" 
13
    Finished building: .././Grow-O-Matic.c
14
    Building target: Grow-O-Matic.elf
15
    Invoking: AVR/GNU Linker : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2
16
    "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -o Grow-O-Matic.elf  Grow-O-Matic.o   -Wl,-Map="Grow-O-Matic.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group  -mmcu=attiny13  
17
    Grow-O-Matic.o: In function `startup':
18
F:\Atmel Studio\Grow-O-Matic\Grow-O-Matic\Debug/.././Grow-O-Matic.c(64,1): undefined reference to `ds1820_init'
19
    Grow-O-Matic.o: In function `main':
20
F:\Atmel Studio\Grow-O-Matic\Grow-O-Matic\Debug/.././Grow-O-Matic.c(49,1): undefined reference to `ds1820_read_temp'
21
    collect2: ld returned 1 exit status
22
    make: *** [Grow-O-Matic.elf] Error 1
23
  Done executing task "RunCompilerTask" -- FAILED.
24
Done building target "CoreRebuild" in project "Grow-O-Matic.cproj" -- FAILED.
25
Done building project "Grow-O-Matic.cproj" -- FAILED.
26
27
Build FAILED.
28
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

von Oliver (Gast)


Lesenswert?

Johannes schrieb:
> ich fange gerade mit der Software für ein kleines Projekt an. Dazu
> benutze ich eine Lib die ich bereits öfters im Einsatz hatte, aber noch
> unter AVR Studio 5.

Irgendwie glaube ich das nicht so ganz.

Wenn du in deine Sourcen schaust, wirst du feststellen, daß da 
tatsächlich nirgends eine Implementierung von ds1820_init() oder von 
ds1820_read_temp() zu finden ist. Da fehlt also (mindestens) eine 
Sourcedatei, oder eine lib (libxxx.a). Wenn du das im Studio 5 schon mal 
ans laufen gebracht hast, solltest du das eigentlich wissen.

Oliver

von Johannes (Gast)


Angehängte Dateien:

Lesenswert?

Oliver schrieb:
> Irgendwie glaube ich das nicht so ganz.
>
> Wenn du in deine Sourcen schaust, wirst du feststellen, daß da
> tatsächlich nirgends eine Implementierung von ds1820_init() oder von
> ds1820_read_temp() zu finden ist. Da fehlt also (mindestens) eine
> Sourcedatei

:/

Ich hab vergessen die passende Sourcedatei mit hoch zu laden. Da sind 
natürlich beide Funktionen Implementiert, nachdem sie zuvor bereits in 
ds18x20lib.h definiert wurden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Sourcen nützen aber nur dann was, wenn Du sie compilierst und den 
Compileroutput dem Linker vorwirfst.

Deine Linkerkommandozeile aber enthält kein Indiz dafür, daß Du das 
tust:
1
    "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -o Grow-O-Matic.elf  Grow-O-Matic.o   -Wl,-Map="Grow-O-Matic.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group  -mmcu=attiny13

Da müsste neben "Grow-O-Matic.o" noch ein "ds18x20lib.o" auftauchen, 
oder aber (was der Name Library suggeriert) ein -lirgendwas.

Warum eigentlich nennen so viele Leute Dinge Library, die gar keine 
sind?

von Johannes (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Deine Linkerkommandozeile aber enthält kein Indiz dafür, daß Du das
> tust:

Danke schon mal für den Hinweis. Das erklärt ziemlich gut warum eben die 
externen Funktionen nicht "gefunden" werden.
Ich lass das aber alles von dem Atmel Studio 6 erledigen, was muss ich 
nun ändern in den Projekteinstellungen damit er diese Files auch 
berücksichtigt?

Ich bin erst vor kurzen auf das Atmel Studio 6 umgestiegen und komm 
bisher mit der Bedienung noch nicht so gut zu recht.

Ich wäre für Hilfe sehr Dankbar.

Lg Johannes

von Oliver (Gast)


Lesenswert?

Die Bedienung ist absolut identisch zum Studio 5. Du musst alle 
Sourcedateien schon in den Solutionordner in der Projektansicht stecken, 
dann werden die auch alle berücksichtigt.

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.