Problem mit include

Gast #2826411
Lesenswert?

Hallo, ich versuche in der main.c die Funktion t2_init_16ms in tim.c 
auszuführen. Beim debuggen läuft das auch, aber der Compiler sagt 
ständig >> implicit declaration of function 't2_init_16ms' <<. Ich 
benutze Atmel Studio 6 und -Os. Ich hoffe das reicht an Infos, ich werd 
noch verrückt.

/* main.c */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/portpins.h>
#include "../tim/tim.h"

int main(void)
{
  t2_init_16ms();
  sei();

  while(1)
  {
    asm volatile("NOP");
  }
}

/* tim.h */
void t2_init_16ms(void);

/ tim.c */
void t2_init_16ms(void)
{
  /* init */
}
Gast #2826429
Lesenswert?

>Anscheinend müssen alle .c und .h Dateien direkt in
>einem Verzeichnis sein

Glaube ich eher nicht.
Ich benutze das Studio nicht, aber da gibt es sicher Einstellungen,
mit denen man ihm Include-Pfade mitteilen kann.
Gast #2826437
Lesenswert?

Hans schrieb:
> Habs rausgefunden. Anscheinend müssen alle .c und .h Dateien direkt in
> einem Verzeichnis sein.

kann nicht sein, wenn er die Datei nicht finden würde, dann gibt es eine 
Fehlermeldung. Hast du eventuell verschiende header dateien mit gleichen 
namen?
Gast #2826446
Lesenswert?

Peter II schrieb:
> Hast du eventuell verschiende header dateien mit gleichen
> namen?

Ja, hab ich wohl. Ich hab die Dateien noch über den "Solution Explorer" 
hinzugefügt. Dann hat er diese Dateien ins Projektverzeichnis kopiert. 
Das will ich aber nicht, sondern meine Verzeichnisstruktur verwenden.
Habs sie jetzt wieder entfernt und mit -I versucht die Verzeichnisse 
bekannt zu machen. Geht nicht.
Gast #2826448
Lesenswert?

Unter "dependencies" sind auch alle meine .h Dateien doppelt aufgeführt. 
Was für ein Scheiß. Ich mach mal ne neue Solution. Oder ich lass es 
gleich, wenns schon an so grundlegenden Dingen scheitert...
Gast #2826471
Lesenswert?

Hans schrieb:
> warum muss ich dann nochmal alle Verzeichnisse einzeln an den
> Compiler geben? Wo liegt da der Sinn?

muss man doch gar nicht. Der compiler braucht alle *.C dateien. Und die 
Zentralen include pathe. Wenn du selber mit relativen includes arbeites 
muss das Studion nichts davon wissen.
Gast #2826493
Lesenswert?

Hans schrieb:
>> Hast du eventuell verschiende header dateien mit gleichen
>> namen?
>
> Ja, hab ich wohl.

Ganz schlechte Idee.

Hans schrieb:
> Geht nicht.

Das ist ja eine sehr ausführliche Fehlerbeschreibung.

Hans schrieb:
> OK, kriegs nicht hin. Ich geb mit den #includes doch schon an, wo das
> Zeug ist, warum muss ich dann nochmal alle Verzeichnisse einzeln an den
> Compiler geben? Wo liegt da der Sinn?

Ist dir schon mal in den Sinn gekommen, daß keiner hier weiß, was du wo 
wie einträgst? Du schreibst ja immer nur, daß du irgendwas irgendwo 
geändert hast und daß es immer noch nicht funktioniert. Erwartest du dir 
da wirklich Hilfe oder willst du nur deinen Frust über's 
Nichtfunktionieren loswerden?
Gast #2826503
Lesenswert?

Hans schrieb:
> OK, dann funktionierts eben für die h-Dateien. Die c-Dateien muss ich
> dann aber trotzdem alle in ein Verzeichnis kopieren? Kann ja auch nicht
> sein.

Du musst dem Compiler oder Projektmanager schon mitteilen, welche 
Dateien du übersetzen und für dein Projekt nutzen willst.
Wenn sie nicht in einem Verzeichnis sind, reicht der Dateiname nicht 
aus.
Da musst du schon den Pfad (absolut oder relativ) mit angeben.
Gast #2826514
Lesenswert?

DirkB schrieb:
> Du musst dem Compiler oder Projektmanager schon mitteilen, welche
> Dateien du übersetzen und für dein Projekt nutzen willst.
> Wenn sie nicht in einem Verzeichnis sind, reicht der Dateiname nicht
> aus.
> Da musst du schon den Pfad (absolut oder relativ) mit angeben.

Ja. Hab ich schon probiert, indem ich den Pfad unter 
Project->Properties->Toolchain->AVR/GNU C Compiler->Directories 
hinzugefügt habe. Mit "../../tim". Er findet das Verzeichnis ja wohl 
auch, bringt keine Fehlermeldung. Aber dann kommt immer nur "undefined 
reference..."
Gast #2826775
Lesenswert?

Hans schrieb:
>OK, habs hingekriegt. Ursache natürlich Blödheit und vor allem Ungeduld.

Na, dann schreib doch mal wie! Der Nächste mit dem Problem fängt sonst
genau auch wieder an, die gleichen Blödheiten zu machen.

Buna-Pelzer

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