linking problem? AtmelStudio

#5755561
Lesenswert?

hallo leute,
seit kurzem kommt es immer wieder vor, dass beim einfügen einer .h datei 
folgender fehler auftritt:

# "ld returned 1 exit status
# "recipe for target 'i2c.elf' failed

ich habe wie immer ein projekt erstellt, in den projektordner das .h 
file kopiert und dann über "rechte maustaste - add - existing item" 
eingefügt.

woran könnte das liegen?

ps: andere projekte, bei denen ich das gleiche gemacht habe, 
funktionieren.


Danke!
Gast #5755617
Lesenswert?

Schraubt G. schrieb:
> woran könnte das liegen?

könnte Folgendes:

Deine H-Datei hat einen Fehler der solange dem Parser nicht auffällt
bis die entsprechende *.c Datei nach dem Include geparst wird und
dann (im Zusammenhang mit dem Fehler in der H-Datei) einen Syntax-
Fehler findet.

Also die H-Datei mal sorgfältig nach "Problemen" durchforsten.
#5756076
Lesenswert?

Erwartest Du daß hier alle hellsehen können? Wie wärs wenigstens mal die 
eigentliche Fehlermeldung zu posten?

Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu 
gehört (in der alle Funktionen letztendlich implementiert sind die im 
Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt 
willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die 
eigentliche Implementierung nirgends finden.

Bahnhof?

Zum Umgang mit Compiler und Linker, zum Verständnis was die wann und 
womit tun, in welcher Reihenfolge und wie das ales zusammenhängt mit .h 
und .c Dateien und welche Auswirkungen das hat empfehle ich DRINGEND ein 
grundlegendes C-Tutorial von vorne bis hinten durchzuackern! Gründlich 
und erschöpfend! Ein Mindestverständnis der Zusammenhänge ist 
unabdingbar! Es bringt nur Frust für alle beteiligten (auch die 
Hilfeleistenden) wenn auf Teufel komm raus der zwölfte Schritt vor dem 
ersten gemacht werden soll.
#5756108
Lesenswert?

Schraubt G. schrieb:
> Ich dachte, dass die oben erwähnten Fehlermeldungen

Das ist keine Fehlermeldung, das ist nur eine rote Alarmleuchte! So viel 
wie "ein Fehler ist aufgetreten", mehr nicht! Man kann gerade noch 
erkennen daß der Linker es war der gestolpert ist ("ld"), aber nicht 
warum.

Die eigentlichen Fehlermeldungen im originalen Wortlaut mit 
ausführlicher Begründung und noch viel mehr sind in der Konsole des 
Buildvorgangs zu finden, das Fenster in dem der viele Text durchrauscht. 
Das ist das einzige was zählt, das einzige worauf Verlass ist und das 
einzige das interessiert.
#5756134
Lesenswert?

Schraubt G. schrieb:
> ich hoffe, ich verstehe dich richtig. meinst du den code im
> makefile?
> lg

Nein. Das build log. Das was auf der Konsole erscheint. Weiter oben hab 
ich ein paar Tips gegeben: Einmal meine hellseherische Vermutung zum 
konkreten Problem und weiterhin den Vorschlag am Anfang anzufangen und 
nicht mitten drin. Das ist zwar ein zeitaufwendiger Prozess aber er ist 
absolut notwendig.

Als Lektion 1 lernst Du jetzt erstmal wo die Fehlermeldungen rauskommen 
und wie man die liest. Da steht dann meist klipp und klar drin wo der 
Fehler zu suchen ist. Betrachte diese Lektion als von mir hiermit 
angeordnet und führe sie durch!
Gast #5756321
Lesenswert?

Bernd K. schrieb:
> Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu
> gehört (in der alle Funktionen letztendlich implementiert sind die im
> Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt
> willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die
> eigentliche Implementierung nirgends finden.

Und warum sagt die Kiste dann nicht, dass sie die Implementation von der 
und der Funktion nicht finden kann?
Sch..ß gefrickeltes C
Gast #5756323
Lesenswert?

my2ct schrieb:
> Bernd K. schrieb:
>> Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu
>> gehört (in der alle Funktionen letztendlich implementiert sind die im
>> Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt
>> willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die
>> eigentliche Implementierung nirgends finden.
>
> Und warum sagt die Kiste dann nicht, dass sie die Implementation von der
> und der Funktion nicht finden kann?
> Sch..ß gefrickeltes C

Weil das hier nicht das Problem ist...

Da in der Header Datei nur Forward-Deklarationen drin sind und in der 
Implementation keine Abhängigkeiten zwischen den Funktionen existieren, 
könnte er sie auch weglassen. Auf die Nase fällt er wegen der fehlenden 
Main trotzdem.
#5756403
Lesenswert?

my2ct schrieb:
> Und warum sagt die Kiste dann nicht, dass sie die Implementation von der
> und der Funktion nicht finden kann?

Die Kiste sagt schon klipp und klar was der Fehler ist, nur Du bist 
anscheinend auch nach über 12 Stunden noch unfähig die Konsole mit den 
Build-Meldungen direkt vor Deiner Nase zu finden und zu lesen was dort 
steht. In deinem Fall steht dort klipp und klar schwarz auf weiß daß der 
linker main nicht finden kann. Du hättest Dir und uns allen den ganzen 
schwachsinnigen Thread sparen können.

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