Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Błąd z własną biblioteką.

24 Mar 2020 20:27 111 2
  • Poziom 3  
    Witam
    Uczę się programowania avr, i próbuje napisać bibliotekę, do tego celu wykorzystuje wyświetlacz 7 segmentowy 4 cyfrowy.
    stworzyłem 2 pliki, jeden z rozszerzeniem .h drugi .c.
    Na próbę napisałem 2 funkcje jedna oczywiście ustawia piny portu, druga po kolei zapala poszczególne segmenty.
    Kiedy dołączę bibliotekę do głównego programu podczas kompilacji pojawia się błąd że te funkcje są niezdefiniowane.
    Co robię źle, albo czego brakuje?
    W załączniku przesyłam pliki tej biblioteki.
    a w programie głównym funkcje wywołuje np;
    TEST();
  • Moderator Mikrokontrolery Projektowanie
    Dołączasz do głównego programu, czyli masz jakiś plik np. main w projekcie. A dołączyłeś do tego projektu plik c zawierający kod twojej "biblioteki"? Pewnie nie, stąd info o braku definicji (btw, wklejaj wyjścia z kompilatora, to ułatwia pomaganie).
    Czyli wiesz już, że musisz załączyć plik c, oprócz nagłówka. No chyba, że skompilujesz to jako prawdziwą bibliotekę i otrzymasz plik .lib, który i tak musisz dołączyć, wskazując go linkerowi.
    Co do twojego pliku nagłówkowego:
    - nie definuj zmiennych globalnych w nagłówkach. Użyj tam extern, a definicje umieść w pliku c.
    - nie masz guarda - sekwencji #ifndef/#endif - która zapobiega przed błędami w przypadku wielokrotnego włączania pliku h, co zdarza się często.
  • Poziom 3  
    Dzięki racja wystarczyło tylko dodać
    Kod: c
    Zaloguj się, aby zobaczyć kod

    i wszystko śmiga, przeniosłem też zmienne do .c.
    ale mam jeszcze jedno pytanko czysto teoretyczne.
    Czy w pliku .h muszę definiować prędkość taktowania procesora jeżeli w bibliotece są używane opóźnienia, czy wystarczy, że zrobi to w pliku główny?