Forum: Compiler & IDEs Problem mit include


von Hans (Gast)


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 */
}

von Hans (Gast)


Lesenswert?

Habs rausgefunden. Anscheinend müssen alle .c und .h Dateien direkt in 
einem Verzeichnis sein. Was für ein Dreck. Hab das Studio nur benutzt, 
weil ich den Simulator verwenden wollte.

von Pro Problem mit include blem mit include (Gast)


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.

von Hans (Gast)


Lesenswert?

Ja gibts, hab ich grad probiert, krieg ich auch nicht hin.
Egal, keinen Bock mehr, die Sonne scheint.

von Peter II (Gast)


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?

von Hans (Gast)


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.

von Hans (Gast)


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...

von Hans (Gast)


Lesenswert?

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?

von Peter II (Gast)


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.

von Hans (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


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?

von DirkB (Gast)


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.

von Hans (Gast)


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..."

von Hans (Gast)


Lesenswert?

OK, habs hingekriegt. Ursache natürlich Blödheit und vor allem Ungeduld. 
Danke für die Hilfe. Ich wünsche euch ein schönes Wochenende.

von Buna-Pelzer (Gast)


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

von Hans (Gast)


Lesenswert?

Kann ich leider nicht, da ichs doch nicht hingekriegt hab. Habs erst mal 
aufgegeben.

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.