• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Własne biblioteki w C++

Object Storage Arubacloud
+1 głos
6,845 wizyt
pytanie zadane 4 grudnia 2015 w C i C++ przez niezalogowany
Witam wszystkich. Chciałbym stworzyć własną bibliotekę w C++ ale nie wiem jak to zrobić. Są w internecie niby jakieś wyjaśnienia, ale wydaje mi sie, że można zrobić to prościej. Pytałem paru znajomych którzy potrafią robić takie rzeczy, ale każdy mówi co innego. Czy biblioteka (najprostsza, taka tylko, żeby zawierała funkcje, do których mógłbym się odnosić bez definiowania ich w kodzie) musi mieć rozszerzenie .dll? Słyszałem, że wystarczy zwykły plik .c (ale już nie .cpp). Próbowałem poszukać folderu w którym znajdują się standardowe biblioteki, których używam przy pisaniu programów, ale nie mogłem go znaleźć. Jak wy tworzycie własne biblioteki i, przede wszystkim co muszę napisać w takim pliku? Czy tak samo należy zacząć od zinkludowania innych bibliotek z których będę korzystał, a następnie po prostu zadeklarować i zdefiniować funkcje i tyle? Z góry dzięki za pomoc.

1 odpowiedź

+3 głosów
odpowiedź 4 grudnia 2015 przez maly Nałogowiec (37,190 p.)

Czy biblioteka (najprostsza, taka tylko, żeby zawierała funkcje, do których mógłbym się odnosić bez definiowania ich w kodzie) musi mieć rozszerzenie .dll?

Nie, możesz stworzyć bibliotekę linkowaną statycznie.

Słyszałem, że wystarczy zwykły plik .c (ale już nie .cpp).

Przecież są biblioteki C++.


Najprościej stworzyć bibliotekę linkowaną statycznie:
W swoim IDE utwórz projekt dla Static library.
W pliku .h napisz deklarcję funkcji.
W pliku .cpp napisz definicję funkcji.
Skompiluj.

W projekcie który będzie używać tej biblioteki użyj nagłówka który napisałeś i dodaj bibliotekę(.a lub .lib), gotowe.

komentarz 4 grudnia 2015 przez niezalogowany

Po tym jak stworzyłem Static library (mam code blocksa) pojawił mi się plik .c a kiedy chcialem go skompilować to pojawił się taki komunikat:

 

Jak napisałem w tym pliku #include <iostream> to wyskakiwał błąd. Czy ja mam ten plik jakoś "załączyć" do konkretnego projektu czy jedynie zapisać go w odpowiednim folderze? A może samo skompilowanie wystarczy. Tak czy inaczej, jeśli nie mogę w tych funkcjach napisać chociażby couta to trochę słabo

komentarz 5 grudnia 2015 przez maly Nałogowiec (37,190 p.)
Jeśli chodzi o komunikat to jest tylko informacja że próbujesz uruchomić bibliotekę a tak się nie da, zamiast F9 klikaj Ctrl+F9 wtedy będziesz tylko kompilował.
Błąd z <iostream> jest dla tego że próbujesz użyć C++ w C a tak też się nieda, utwórz plik z rozszerzeniem .cpp i w nim pisz swój kod.
komentarz 5 grudnia 2015 przez niezalogowany
Teraz odkryłem że jak stworzyłem Static library to powstały mi w folderze (między innymi) 3 pliki: .c .cpp i .h W takim razie .c olewam, definiuję funkcje w .cpp. Wyskakuje mi błąd undefnied reference to 'WinMain@16' i dalej nie rozumiem, w jaki sposób po skompilowaniu tej biblioteki potem mogę ją tak po prostu zainkludować, nie zastanawiając się w jakim folderze się ona znajduje. Plik .cpp w którym ją "napisałem" nazywa się main, czyli że #include <main> bym miał potem pisać czy całą ścieżkę dostępu do tego? (C://Pulpit itd...
komentarz 5 grudnia 2015 przez maly Nałogowiec (37,190 p.)

dalej nie rozumiem, w jaki sposób po skompilowaniu tej biblioteki potem mogę ją tak po prostu zainkludować, nie zastanawiając się w jakim folderze się ona znajduje.

Tak się nie używa zawnętrznych(niestandardowych) bibliotek, w opcjach projektu zawsze musisz podać ścieżkę gdzie znajdują sie nagłówki i dodać dla linkera odpowiednie liby.

Co do undefnied reference to 'WinMain@16' to aplikacja którą piszesz niema funkcji main.

komentarz 5 grudnia 2015 przez niezalogowany
Teraz biblioteka się kompiluje, załączyłem ją (chyba) do projektu według tych instrukcji: http://cpp0x.pl/artykuly/?id=48 przez project->build options. I teoretycznie biblioteka się załączyła, ale nie wiem jak mogę się odnosić w programie do funkcji w niej zawartych.

Podobne pytania

0 głosów
1 odpowiedź 307 wizyt
pytanie zadane 1 września 2022 w C i C++ przez polandonion Mądrala (7,090 p.)
0 głosów
2 odpowiedzi 778 wizyt
0 głosów
4 odpowiedzi 13,737 wizyt
pytanie zadane 6 grudnia 2015 w C i C++ przez Munvik Dyskutant (9,350 p.)

92,632 zapytań

141,499 odpowiedzi

319,874 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...