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 */
}
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.
>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.
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?
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.
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...
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?
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.
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?
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.
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..."
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