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.
Ja gibts, hab ich grad probiert, krieg ich auch nicht hin. Egal, keinen Bock mehr, die Sonne scheint.
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.
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.
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..."
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.