Hallo allerseits, also ich arbeite gerade mit den Mikrocontrollern der Firma EnergyMicro und habe ein wenig Startschwierigkeiten, die Bibliotheken in die IAR-Embedded-Workbench richtig einzubinden. Wie stelle ich den Preprocessor ein, automatisch in den richtigen Verzeichnissen nach den benötigten C-Dateien zu suchen? Beispielsweise habe ich die Zeile > #include "efm32_cmu.h" in meinem Programm. Die HeaderDatei befindet sich in D:\Eigene Dateien\EFM32_Programm\efm32lib\inc\ und dieses Verzeichnis habe ich in den Projektoptionen --> C/C++Compiler Einstellungen in den "additional include directories" auch eingebunden. ...und soweit ich es verstehe, wird die HeaderDatei von dem Preprozessor auch gefunden, denn sonst hätte er sich beschwert, was mir nämlich passiert ist, bevor ich dieses Verzeichnis eingebunden hatte. Nun möchte ich allerdings auch einige Funktionen des eingebundenen Headers nutzen, in der Main nutze ich also die Funktion > CMU_ClockEnable(cmuClock_GPIO, true); ...und erhalte daraufhin den folgenden Error: >Error[Li005]: no definition for "CMU_ClockEnable" >[referenced from D:\Eigene Dateien\ >EFM32_Programm\Debug\Obj\main.o] Offenbar wird also die c-Funktion: efm32_cmu.c nicht gefunden. Diese befindet sich in dem Verzeichnis D:\Eigene Dateien\EFM32_Programm\efm32lib\src\ und dieses Verzeichnis habe ich ebenfalls in in den Preprocessoroptionen eingebunden... Im gegensatz zu der Headerdatei scheint der Preprozessor die Datei jedoch nicht selbständig zu finden, obwohl sie vorhanden ist... Wenn ich die benötigte efm32_cmu.c eigenhändig in den Workframe meines Projektes per "addFile" einbinde, dann wird die Datei gefunden... Das ist aber irgendwie mega umständlich, vor allem wo die Headerdateien ja richtig eingebunden werden, nur mit den C-Dateien klappt es nicht auf Anhieb... jemand eine Idee? mfg
Großes Fragezeichen schrieb: > Das ist aber irgendwie mega umständlich, vor allem wo die Headerdateien > ja richtig eingebunden werden, nur mit den C-Dateien klappt es nicht auf > Anhieb... Tja, das ist halt so "umständlich". Der Compiler compiliert nicht automatisch alles, was er in den Verzeichnissen findet, sondern nur das, was man ihm per Projekt vorsetzt. Und das ist auch ganz gut so ;) Oliver
Großes Fragezeichen schrieb: > Beispielsweise habe ich die Zeile > >> #include "efm32_cmu.h" > > in meinem Programm. Mach aus den Anführungszeichen Spitzklammern: >> #include <efm32_cmu.h> und der Compiler sucht im Include-Pfad. Die Anführungszeichen verwendest Du dann, wenn die Headerdatei an der gleichen Stelle zu finden ist, wie die anderen zum Projekt gehörenden Dateien (also in "src"). Und versuche mal, den Kram in einem Verzeichnis ohne Leerzeichen im Namen (also nicht irgendwo unter Eigene Dateien") abzulegen.
>Error[Li005]: no definition for "CMU_ClockEnable" >[referenced from D:\Eigene Dateien\ >EFM32_Programm\Debug\Obj\main.o] Sieht für mich eher nach Fehler vom Linker aus ...
Moin, der weg, den Du hier beschreibst ist der richtige: Großes Fragezeichen schrieb: > Wenn ich die benötigte efm32_cmu.c eigenhändig in den Workframe meines > Projektes per "addFile" einbinde, dann wird die Datei gefunden... Warum ist das sinnvoll? Du kannst die Funtionen, die in der Datei "efm32_cmu.c" definiert sind zu einer Library kompilieren. In einem Projekt musst Du dann nur den Header inkludieren und die Library per "add File" hinzufügen. viel Spaß
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.