Skocz do zawartości

Visual Code błędy elementu #include


_LM_

Pomocna odpowiedź

Już po raz któryś pojawia się błąd z którym nie mogę sobie poradzić 

Wykryto błędy elementu #include. Zaktualizuj element includePath. Dla tej jednostki translacji (C:\Users\dell\Documents\PlatformIO\Projects\Pms_test\lib\3080r\3080r.c) wyłączono zygzaki.C/C++(1696)
nie można otworzyć pliku źródło "functional" (dependency of "Ticker.h")C/C++(1696)

Zawsze to omijałem (czyt. tuszowałem problem zamiast go rozwiązać) no ale wiecznie tak nie można. Tak wygląda drzewo projektu,

389317676_bd.thumb.JPG.b57430134b0c96b6a2354c0f65fa3243.JPG

czy to oznacza że nie mogę stosować Ticker.h w swoich bibliotekach? Nawet jakbym chciał z main przesłać wskaźnik do timera to muszę znać jego typ więc i tak ta biblioteka musi być dołączona 

 

Edytowano przez _LM_
Link do komentarza
Share on other sites

Przed chwilą, _LM_ napisał:

Już po raz któryś pojawia się błąd z którym nie mogę sobie poradzić 

To jest błąd rzucony przez kompilator czy IDE? Z tego co podałeś to ciężko stwierdzić. Musisz podać więcej informacji. 

Możesz udostępnić projekt przez Gita albo dołączyć archiwum z projektem żeby dało się to odpalić samodzielnie?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

W ini widzę tylko lib_deps

[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
upload_speed = 115200
lib_deps = 
	arduino-libraries/NTPClient@^3.1.0
	fu-hsi/PMS Library @ ^1.1.0
	sparkfun/SparkFun BME280 @ ^2.0.9
	sparkfun/SparkFun VEML6075 Arduino Library @ ^1.1.4
	sparkfun/SparkFun AS3935 Lightning Detector Arduino Library @ ^1.4.3
	remoteme/RemoteMe @ ^1.0.26

O to chodzi?

Link do komentarza
Share on other sites

Z tego co sprawdziłem to u mnie pierwszy błąd polega na braku dołączenia SPI:

In file included from .pio\libdeps\esp12e\SparkFun AS3935 Lightning Detector Arduino Library\src\SparkFun_AS3935.cpp:12:0:
.pio\libdeps\esp12e\SparkFun AS3935 Lightning Detector Arduino Library\src\SparkFun_AS3935.h:5:17: fatal error: SPI.h: No such file or directory

Zwykle rozwiązuje się to... przez dodanie include'a SPI.h w main.cpp. Po załączeniu SPI, pojawia się kolejny problem, który już wskazuje na to, że kompilator nie może sobie ogarnąć include <functional> (od std::function).

In file included from lib\3080r\3080r.c:2:0:
C:\Users\Mateusz\.platformio\packages\framework-arduinoespressif8266\libraries\Ticker\src/Ticker.h:25:22: fatal error: functional: No such file or directory
 #include <functional>

I tutaj trochę nie mam pomysłu bo nigdy nie używałem zewnętrznych bibliotek. Ale spróbował bym zrobić nowy projekt i w nim załączać bibliotekę Ticker i jej użyć. I zobaczyć czy na takim basicowym projekcie nadal jest problem z brakiem <functional>. Kolejnym podejściem mogłoby być wrzucenie źródeł biblioteki Ticker bezpośrednio do projektu (już nie przez plik projektu). Bibliotekę wrzuć do katalogu lib zgodnie z wytycznymi które są opisane w README.

Edytowano przez Matthew11
poprawa literówek
  • Lubię! 1
Link do komentarza
Share on other sites

Update. Wiem o co chodzi. Masz "bibliotekę" która jest kodem C. W tym kodzie załączasz bibliotekę Ticker, która, załącza header C++ <functional>. Nie znam się na miksowaniu C i C++, ale generalnie to nie chce działać.

Ale jak zmienisz rozszerzenie 3080r.c na 3080r.cpp to błędu z problemem dołączenia <functional> już nie ma, ale za to pojawia się masa kolejnych błędów, ale już w Twoim kodzie.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

27 minut temu, Matthew11 napisał:

Ale jak zmienisz rozszerzenie 3080r.c na 3080r.cpp to błędu z problemem dołączenia <functional> już nie ma, ale za to pojawia się masa kolejnych błędów, ale już w Twoim kodzie.

No jak ręką odjął 😉 dzięki za trafną poradę! 

Link do komentarza
Share on other sites

Ogólnie C i CPP często się nie lubią jeżeli chodzi o cross-include... IDE często mają z tym problemy. Jeżeli dobrze obstawiam używasz CMake i tutaj najprawdopodobniej jest źródło problemu... Bo mam to samo z Raspberry Pi Pico, ale ostatnio przerzuciłem się całkowicie na CPP...

Podobna sytuacja występuje jak np. implementowałem moje utils.c w Pico i też miałem lawinę błędów... Czyli to raczej nie samo IDE, a coś od strony kompilatora.

Link do komentarza
Share on other sites

55 minut temu, _LM_ napisał:

To jeszcze pytanie czy jeśli plik źródłowy jest .cpp to header powinien być  .hpp?

Nie ma takiego wymogu. Możesz używać .h lub .hpp i z tego co mi wydaje można stosować jeszcze inne rozszerzenia.

W praktyce nie miałem żadnych problemów z używaniem .h/.cpp przy kompilacji pod C++.

Natomiast słyszałem opinię, że stosownie odpowiednio .h/.c i .hpp/.cpp jest dobrą praktyką i chroni przed wieloma problemami (ta opinia głównie dotyczyła pisania kodu, który miał działać na wielu platformach pewnie można to wygrzebać gdzieś w prezentacjach lub na kanale Jasona Turnera).

57 minut temu, H1M4W4R1 napisał:

Jeżeli dobrze obstawiam używasz CMake

Byłoby świetnie, ale niestety nie*. PIO korzysta ze swojego customowego systemu budowania

*Jeśli @_LM_ nie korzysta z czegoś innego i nadal dyskusja dotyczy PIO to powyższe się aplikuje.

Edytowano przez Matthew11
poprawa literówki
  • Lubię! 1
Link do komentarza
Share on other sites

Ok ostatnie pytanie (chyba) jeśli chodzi o strukturę projektu: 

P3.thumb.JPG.d5b796a4126728168faa99f3be4ae2d1.JPG

Bo co innego jakaś libka a co innego pliki które są mi potrzebne "od ręki". Jak to jest w tym VScode mogę je dołączać w folderze src czy nie? Tak żeby było jasne o czym piszę to np tak to robiłem w eclispe:

P4.thumb.JPG.8e572384a256b3839a2238d1238665ec.JPG

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.