Forum: Compiler & IDEs [Arduino/Platformio/VSC] #include nimmt falsche Datei


von Matthias S. (da_user)


Lesenswert?

Hi,

ich programmiere ein Arduino-Programm. Das ganze jetzt mal in 
VisualStudioCode mit PlatformIO. Kann ich jedem nur mal empfehlen einen 
Blick darauf zu werfen ;-)

Nun möchte ich in diesem Programm die greiman/SdFat Lib verwenden. 
PlatformIO hat die auch heruntergeladen und in mein entsprechendes 
Benutzerverzeichnis installiert: 
[user]\.platformio\lib\SdFat_ID322\src\SdFat.h

Wenn ich jetzt ein #include "SdFat.h" mache, kann ich aber trotzdem 
nicht das Objekt SdFat deklarieren: "'SdFat' does not name a type".
Jetzt habe ich schon herausgefunden, dass es eine zweite SdFat.h gibt, 
nämlich 
[user]\.platformio\packages\framework-arduinoavr\libraries\SD\src\utilit 
y\SdFat.h

Wie bekomme ich jetzt Arduino/PlatformIO/VisualStudioCode dazu, die 
richtige SdFat.h auszuwählen, ohne den absoluten Pfad anzugeben?

von Spaßverderber (Gast)


Lesenswert?

Das Problem hatten andere schon, die Arduino-Entwickler meinten:
1
... that this can be confusing for
2
novice users, when for example a platform library overrides a builtin
3
library, which is typically considered "normal" and should not generate
4
a warning.

von Matthias S. (da_user)


Lesenswert?

Normal ist das Verhalten irgendwie nicht. Zumindest nicht so, wie ich es 
als normal bewerten würde und auch nicht konsequent.

Was ich vergessen habe zu erwähnen, und dessen Relevanz sich jetzt auch 
erst mit weiteren Tests herausgestellt hat:
Ich möchte die SdFat-Lib in einer Projekt-Lib verwenden.
Dafür gibt es bei PlatformIO einen extra Ordner und PlatformIO erwartet 
dann wohl auch für jede Projekt-Lib einen seperaten Ordner.

Folgende Varianten:
- Verwendung in /main.cpp: Funktioniert

- Verwendung in /lib/foolib.h: richtige Lib wird ausgewählt, aber in 
main.cpp wird die foolib.h nicht gefunden

- Verwendung in /lib/foolib/foolib.h: foolib.h wird in main.cpp 
gefunden, in foolib.h wird aber, wie beschrieben, die falsche Lib 
ausgewählt.

: Bearbeitet durch User
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.