[Arduino/Platformio/VSC] #include nimmt falsche Datei

#5699664
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?
Gast #5699921
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.
#5699992
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren