logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVR studio 6 - Pliki nagłówkowe nie chcą się dołączyć

fidor111 21 Lip 2015 13:50 1965 11
REKLAMA
  • #1 14864349
    fidor111
    Poziom 12  
    Posty: 91
    Ocena: 2
    Witam!

    edit: mam nadzieję że to właściwy dział na takie pytanie?

    Mam problem z dodaniem plików nagłówkowych (tak to się chyba nazywa) w avr studio 6. Nie chodzi o fakt że coś w nich nie działa, tylko o to że nie chcą się załączyć. Opiszę kolejne stawianie przeze mnie kroki, czy ktoś mógłby wskazać mi gdzie popełniam błąd?

    Pliki pochodzą z płyty dołączonej do książki pana Kardasia, także z ich strony wszystko powinno być w porządku.

    Zatem po kolei:
    Uruchamiam projekt z avrstudio -> View -> Solution Explorer -> prawym na nazwę projektu -> Add Existing Item -> zaznaczam pliki lcd44780.c oraz lcd44780.h -> zaznaczam jako Add as link

    Widzę że pliki są dołączone na końcu listy Solution Explorer

    Teraz próbuję skompilować funkcję main, która zwraca następujący komunikat:
    LCD/lcd44780.h: No such file or directory

    Załączam screena:
    AVR studio 6 - Pliki nagłówkowe nie chcą się dołączyć

    Muszę popełniać jakiś błąd przy dołączaniu. Co robię nie tak?

    Pozdrawiam!
  • REKLAMA
  • #2 14864380
    skalsky5000
    Poziom 21  
    Posty: 485
    Pomógł: 50
    Ocena: 49
    Nie wiem dokładnie jak jest w avrstudio ale pliki lcd44780.c i lcd44780.h masz w głównym folderze projektu spróbuj #include "lcd44780.h" .
  • #3 14864385
    fidor111
    Poziom 12  
    Posty: 91
    Ocena: 2
    Brak efektu, zwraca identyczny komunikat
  • REKLAMA
  • #4 14864458
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Sprostowanie: Nie używasz AVR Studio tylko Atmel Studio, czyli nowszy pakiet IDE.

    Wykonujesz prawidłowo, a błąd sugeruje problem ze ścieżką. Czy w głównym projekcie używasz nazw z polskimi literami lub spacjami?

    Spakuj cały projekt i załącz tutaj jeśli możesz.
  • REKLAMA
  • #5 14864470
    Krawiec91
    Poziom 13  
    Posty: 40
    Pomógł: 8
    Ocena: 7
    Nie powinno być:
    #include "lcd44780.h"

    Piszesz, że dodajesz do projektu pliki lcd44780.c i lcd44780.h. W kodzie próbujesz dodać plik "LCD/lcd44780.h"[/code]
  • #6 14864486
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Krawiec91 napisał:
    Nie powinno być:
    #include "lcd44780.h"

    Piszesz, że dodajesz do projektu pliki lcd44780.c i lcd44780.h. W kodzie próbujesz dodać plik "LCD/lcd44780.h"

    Wykonuje prawidłowo, gdyż zaznaczył opcję: Add as link
    Nazwa folderu jest więc niezbędna.
  • #7 14864791
    fidor111
    Poziom 12  
    Posty: 91
    Ocena: 2
    dondu napisał:
    Czy w głównym projekcie używasz nazw z polskimi literami lub spacjami?

    Zawartość glównego pliku również pochodzi z płyty, zawiera spacje i polskie ogonki, ale tylko w komentarzach

    Szanując trud włożony przez autora w napisanie tych wszystkich bibliotek nie chciałbym ich bez jego zezwolenia rozprowadzań publicznie, dlatego jeśli nie masz nic przeciwko puszczę Ci to na pm
  • #8 14864906
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2206
    Pamiętaj, że sposób w jaki dodajesz pliki nagłówkowe do projektu jest bez znaczenia - pliki nagłówkowe wczytywane są na etapie kompilacji przez kompilator i Atmel Studio nie ma nic do tego. To co robisz wpływa tylko na to jak je widzisz w drzewie projektu. Stąd też jeśli kompilator ich nie widzi to masz błąd jaki ci wyskakuje. W dyrektywach preprocesora #include musisz wskazać miejsce gdzie one się fizycznie znajdują, lub w Atmel Studio w opcjach kompilatora dodać ścieżki wyszukiwania plików include.
  • REKLAMA
  • #9 14865136
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Witam.
    Powinno być:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Poza tym, gdzie masz plik main.c?
  • Pomocny post
    #10 14866139
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Już wszystko jest jasne - autor tematu miał rozmieszczone pliki w folderze nadrzędnym wyswietlacz następująco:

    Kod: TeX
    Zaloguj się, aby zobaczyć kod


    Atmel Studio używa ścieżek względnych, a nie bezwzględnych. Z tego powodu przy takiej strukturze rozmieszczenia plików, w pliku wyswietlacz.c należy cofnąć się o jeden folder do góry co oznacza, że w Windows należy użyć: ../

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Gdybyś natiomiast nie miał drugiego folderu o nazwie wyświetlacz, a pliki wyswietlacz.c oraz wyswietlacz.cproj były na tym samym poziomie co wyswietlacz.atsln, to wtedy nie musiałbyś wychodzić o jeden folder wyżej i wystarczyłoby:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Tak samo byłoby, gdyby folder LCD był podfolderem drugiego folderu wyswietlacz.

    W momencie pisania komendy include w Atmel Studio, podpowiada on nazwy folderów i plików dostępnych w bieżącym folderze oraz plików toolchain. W Twoim przypadku na liście nie widać folderu LCD. To już powinno dać do myślenia i wtedy wprowadzenie ../ powoduje zmiany na liście i pokazanie folderu wyżej, a tam już widać folder LCD.

    Problem więc dotyczył Windows, a nie Atmel Studio :)
  • #11 14866608
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2206
    Dla ścisłości - można ścieżki podawać w postaci bezwzględnej, lecz jeśli przeniesiemy projekt do innego katalogu to wszystko się posypie. IMHO zamiast stosować ../ i ścieżki względne można rozważyć określenie ścieżek wyszukiwania include przez gcc - to ma sens jeśli jakieś nagłówki znajdują się w zupełnie innej lokalizacji niż projekt - np. tal jest dla nagłówków z AVR-libc.
  • #12 14867969
    fidor111
    Poziom 12  
    Posty: 91
    Ocena: 2
    Dziękuję wszystkim za interwencje, po zastosowaniu się do wskazówek dondu problem został zażegnany

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik zgłosił problem z dołączeniem plików nagłówkowych (lcd44780.c oraz lcd44780.h) w Atmel Studio 6, co skutkowało błędem kompilacji: "No such file or directory". W odpowiedziach zasugerowano, aby upewnić się, że ścieżki do plików są poprawne oraz że nie zawierają polskich liter ani spacji. Wskazano również, że Atmel Studio używa ścieżek względnych, co oznacza, że w przypadku struktury folderów, użytkownik powinien użyć odpowiednich dyrektyw #include, takich jak "../LCD/lcd44780.h". Po zastosowaniu się do wskazówek problem został rozwiązany.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA