c libraries how install
Deze tutorial voor C ++ Libraries zal uitleggen wat bibliotheken in C ++ zijn, hun typen, samen met de installatie en het gebruik van een C ++ Standard Library:
Een bibliotheek kan worden gedefinieerd als een pakket code of functies dat herbruikbaar is. Verschillende applicaties kunnen dezelfde bibliotheek keer op keer gebruiken. Door bibliotheken te hebben, bereiken we herbruikbaarheid, d.w.z. een van de principes van Object-Oriented Programming.
Bijvoorbeeld, wiskundige functies zoals sin, cos, tan, abs, etc. kunnen in een bibliotheek worden gemaakt. Hierdoor hoeven we deze functies niet steeds weer voor elke applicatie te schrijven. We kunnen gewoon naar de bibliotheek verwijzen en de code hergebruiken in onze applicaties.
Bezoek hier om C ++ vanaf het begin te leren.
Wat je leert:
C ++ bibliotheken
Een C ++ -bibliotheek bestaat meestal uit:
Een header-bestand: Dit definieert de functionaliteit die de bibliotheek biedt.
Een voorgecompileerd binair bestand: Dit bestand bevat de daadwerkelijke implementatie van de functionaliteit. Deze implementatie is voorgecompileerd in een machinetaal.
Bibliotheken zijn voorgecompileerd omdat er geen reden is om de bibliotheken opnieuw te compileren, aangezien ze nauwelijks veranderen. Ten tweede zijn de voorgecompileerde bibliotheken in een machinetaalvorm beveiligd omdat niemand er rechtstreeks toegang toe heeft. Zo zijn de bibliotheken beveiligd.
In C ++ hebben we twee soorten bibliotheken:
- Statische bibliotheken
- Dynamische bibliotheken
Statische bibliotheken
Statische bibliotheken worden ook wel archieven genoemd. Een statische bibliotheek is een bibliotheek die een onderdeel wordt van het uitvoerbare bestand dat ernaar verwijst. Dus wanneer we een applicatie ontwikkelen en daarin verwijzen naar een statische bibliotheek, wordt de inhoud van de statische bibliotheek in de applicatie vervangen.
De statische bibliotheken op Windows hebben meestal de extensie '.lib', terwijl die op Linux de extensie '.a' (of archief) hebben.
start een Java-project in eclipse
Een voordeel van het hebben van een statische bibliotheek met programmaverwijzingen is dat we de statische bibliotheek niet samen met het uitvoerbare bestand hoeven te distribueren. Dit komt doordat de inhoud van de statische bibliotheek deel uitmaakt van de applicaties en deze niet apart hoeft te worden opgegeven.
Dit specifieke voordeel resulteert in een nadeel, aangezien het uitvoerbare bestand omvangrijk kan worden en er te veel ruimte wordt verspild omdat de bibliotheek een onderdeel is van het uitvoerbare bestand.
Een ander nadeel van het hebben van een statische bibliotheek is dat als de statische bibliotheek verandert, de uitvoerbare verwijzingen ernaar ook moeten worden bijgewerkt.
Dynamische bibliotheken
De dynamische bibliotheek wordt ook wel de 'gedeelde bibliotheek' genoemd. In Windows heeft de dynamische bibliotheek de extensie “.dll” (dynamisch gekoppelde bibliotheek). Onder Linux heeft de dynamische bibliotheek de extensie '.so' (gedeeld object).
Een dynamische bibliotheek is een bibliotheek die bestaat uit routines die tijdens runtime in de toepassing worden geladen. Wanneer een applicatie naar een dynamische bibliotheek verwijst, wordt de bibliotheek geen onderdeel van de applicatie, maar blijft het een aparte eenheid.
De dynamische bibliotheek heeft het voordeel dat één exemplaar van de bibliotheek door veel toepassingen kan worden gedeeld, waardoor ruimte wordt bespaard. Nog een ander voordeel is dat, aangezien de dynamische bibliotheek een afzonderlijke eenheid is, het uitvoerbare bestand van de toepassing niet verandert wanneer de dynamische bibliotheek verandert.
Het enige nadeel van een dynamische bibliotheek is dat er een apart programma voor nodig is om de bibliotheek te laden en ernaar te verwijzen, wat lastig kan zijn. Om dit probleem op te lossen, gebruiken we de “import library” routine.
Een import bibliotheek is een mechanisme dat automatisch een dynamische bibliotheek in het programma laadt en gebruikt. Op Windows houdt de importbibliotheek een kleine statische bibliotheek (.lib) bij met dezelfde naam als het .dll-bestand en is deze tijdens het compileren aan het programma gekoppeld.
Zodra dit is gebeurd, wordt de dynamische bibliotheek gebruikt alsof het een statische bibliotheek is. Op het Linux-besturingssysteem fungeert de dynamische bibliotheek of het gedeelde object (.so) -bestand zowel als een importbibliotheek als een dynamische bibliotheek. De meeste linkers op Linux OS kunnen een importbibliotheek voor een dynamische bibliotheek bouwen.
C ++ - bibliotheken installeren en gebruiken
Laten we eens kijken naar enkele van de stappen die we moeten volgen om deze bibliotheken te installeren en ze in onze applicatie te gebruiken.
# 1) Het verwerven van de bibliotheek
Om de bibliotheek in onze applicatie te kunnen gebruiken, moeten we eerst de bibliotheek aanschaffen. De bibliotheek is mogelijk voorgecompileerd - in dat geval hoeven we alleen de bibliotheek voor het besturingssysteem te downloaden. Als de bibliotheek niet voorgecompileerd is, moeten we de broncode downloaden en op onze computer compileren.
Op Windows hebben de bibliotheken meestal de extensie .zip, terwijl op het Linux-besturingssysteem het bibliotheekpakket wordt gedistribueerd als ‘.RPM’.
# 2) Installeer de bibliotheek
De volgende stap zodra we de bibliotheek hebben verkregen, is om de bibliotheek te installeren. Installatie op Windows is net zo eenvoudig als het uitpakken van de inhoud van de bibliotheek in een map. Op Linux kunnen we de pakketbeheerder aanroepen om de bibliotheek te installeren.
# 3) Voeg het bibliotheekpad voor de compiler toe
We moeten het pad van de bibliotheek instellen zodat de compiler weet waar hij naar de bibliotheekbestanden moet zoeken. Dit kan de directory ‘include’ op Windows of ‘/ usr / include’ op Linux zijn.
# 4) Koppel het bibliotheekpad
Deze stap wordt uitgevoerd zodat de linker het exacte pad kent van de bibliotheken die hij tijdens het koppelingsproces moet koppelen. Gewoonlijk is er de map ‘/ lib’ op Windows of de map ‘usr / lib’ op Linux die alle bibliotheken bevat.
Zodra de bibliotheek is geïnstalleerd, kennen de compiler en de linker het pad van de te gebruiken bibliotheek en is de bibliotheek klaar voor gebruik. In ons programma kunnen we verwijzen naar de bibliotheekfunctionaliteit, en aangezien we de headerbestanden in ons programma hebben opgenomen, kan de compiler de functionaliteit compileren.
Omdat programmeurs meestal IDE's gebruiken voor ontwikkeling, specificeren we het bibliotheekpad in de IDE zelf.
Standaard headers / bibliotheken in C ++
Laten we enkele van de standaard headers of bibliotheken bespreken die de C ++ -taal gebruikt. We hebben deze headers al besproken in hun respectievelijke onderwerpen in onze C ++ tutorials.
C Standaardbibliotheek
ANSI C-standaard specificeert de C standaard bibliotheek of libc dat fungeert als de standaardbibliotheek voor de programmeertaal C. C ++ neemt elke koptekst uit de C-standaardbibliotheek onder een andere naam op door ‘c’ aan het begin toe te voegen en ‘.h’ aan het einde te verwijderen. Dus header xxx.h in C wordt ‘cxxx’ in de C ++ -standaard.
De C-standaardbibliotheek biedt de functionaliteit met betrekking tot macro's, stringverwerking, wiskundige berekeningen Typedefinities, invoer / uitvoerverwerking, geheugenbeheer, enz.
Controleren hier voor meer informatie over C Standard Library.
algemeen
De algemene C ++ -bibliotheek bevat de volgende headers, zoals hieronder weergegeven.
Naam van de koptekst | Omschrijving |
---|---|
Definieert functionaliteit voor het tupel. Beschikbaar vanaf C ++ 11. | |
In deze header worden algoritmen gedefinieerd die door veel containers worden gebruikt. | |
Bevat tijdelementen zoals std :: chrono :: time_point, std :: chrono :: duration en klokken. | |
Deze header biedt functie-objecten die kunnen worden gebruikt met algemene algoritmen. | |
Bevat klassen en sjablonen voor iterators. | |
Definieert geheugenbeheerfunctionaliteit in C ++. | |
Definieert standaard uitzonderingsklassen, waaronder std :: logic_error en std :: runtime_error, beide afgeleid van std :: exception. | |
Sjabloonklassen zoals std :: pair etc. of naamruimten zoals std :: rel_ops worden in deze header gedefinieerd. |
Streams en invoer / uitvoer
Naam van de koptekst | Omschrijving |
---|---|
Bevat de functionaliteit van de sjabloonklasse std :: ostream en andere ondersteunende klassen voor uitvoer. | |
Biedt functionaliteit voor op bestanden gebaseerde invoer-uitvoer. | |
Bevat functionaliteit voor uitvoeropmaak zoals precisie, basis enz. | |
Bevat basisfunctionaliteit voor iostream-bewerkingen. | |
Biedt forward declaraties van verschillende I / O-gerelateerde klassesjablonen. | |
Biedt C ++ input en output fundamentals. | |
Bevat functionaliteit van de sjabloonklasse std :: istream en andere ondersteunende klassen voor invoer. | |
Definieert de sjabloonklasse std :: stringstream en andere ondersteunende klassen die worden gebruikt voor stringmanipulatie. | |
Bevat functionaliteit voor het lezen van en schrijven naar / van bepaalde typen tekenreeksen, zoals externe bestanden of tekenreeksen. |
Taalondersteuning
Naam-van-de-koptekst | Omschrijving |
---|---|
Implementeert de functionaliteit voor std :: queue, een single-ended wachtrij en std :: priority_queue, een prioriteitswachtrij. | |
Deze header bevat verschillende typen en functies voor het afhandelen van uitzonderingen, inclusief de basisklasse voor alle uitzonderingen, std :: exception. | |
Deze header bevat de sjabloonklasse std :: numeric_limits die wordt gebruikt voor het beschrijven van fundamentele numerieke eigenschappen | |
Bevat nieuwe en verwijderde operators en andere functies met betrekking tot de grondbeginselen van C ++ geheugenbeheer. | |
Biedt faciliteiten voor het werken met C ++ runtime-informatie. |
Snaren
Naam van de koptekst | Omschrijving |
---|---|
Deze header bevat de standaard stringklassen en sjablonen in C ++. | |
Dit is nieuw in C ++ 11. Biedt hulpprogramma's voor het matchen van patronen met behulp van reguliere expressies. |
Lokalisatie
Naam-van-de-koptekst | Omschrijving |
---|---|
Deze header heeft locale functionaliteit. Het definieert klassen en declareert functies die de informatie die specifiek is voor een locale inkapselen en manipuleren. | |
Bevat facetten voor codeconversie voor verschillende tekencoderingen. |
Containers
Naam-van-de-koptekst | Omschrijving |
---|---|
Bevat functionaliteit voor std :: array, een container voor een array met een vaste grootte. Nieuwe toevoeging in C ++ 11 en TR1. | |
Gespecialiseerde containerklasse std :: bitset, een bit-array. | |
Bevat functionaliteit voor std :: deque, een dubbele wachtrij. | |
Header voor std :: forward_list, een enkelvoudig gelinkte lijst. Nieuwe toevoeging in C ++ 11 en TR1. | |
Bevat functionaliteit voor std :: list, een dubbel gelinkte lijst. | |
Bevat functionaliteit voor std :: map en std :: multimap, gesorteerde associatieve array en multimap. | |
Heeft de koptekst voor std :: set en std :: multiset, gesorteerde associatieve containers of sets. | |
Biedt de containeradapterklasse std :: stack, een stack. | |
Deze header bevat std :: unordered_map en std :: unordered_multimap, hashtabellenfunctionaliteit. Nieuw in C ++ 11 en TR1. | |
Biedt functionaliteit voor std :: unordered_set en std :: unordered_multiset. Nieuw in C ++ 11 en TR1. | |
Biedt functionaliteit voor std :: vector, een dynamische array. |
Thread Support-bibliotheek
Naam van de koptekst | Omschrijving |
---|---|
Een nieuwe klasse en naamruimte voor het werken met threads vanaf C ++ 11. | |
De nieuwe toevoeging aan C ++ 11 en hoger. Het biedt mutexes, locks, call once, etc. die allemaal mechanismen zijn voor wederzijdse uitsluiting. | |
Bevat functionaliteit voor Conditievariabelen die synchronisatieprimitieven bieden die worden gebruikt om een thread te blokkeren totdat een andere thread een melding geeft dat aan een bepaalde conditie is voldaan of totdat een systeemtijd is bereikt. De nieuwe toevoeging voor C ++ 11 en hoger. | |
Deze header bevat de componenten die een C ++ -programma kan gebruiken om in één thread op te halen en het resultaat (waarde of uitzondering) van een functie die in dezelfde thread of een andere thread is uitgevoerd. |
Numerieke bibliotheek
Naam van de koptekst | Omschrijving |
---|---|
De koptekst beschrijft verschillende functies voor het weergeven en manipuleren van complexe getallen. Het heeft ook een klassesjabloon voor complexe getallen | |
Functionaliteit om (pseudo-) willekeurige getallen te genereren | |
Deze header bevat - vijf klassesjablonen (valarray, slice_array, gslice_array, mask_array en indirect_array), - twee klassen (slice en gslice), - Een reeks gerelateerde functiesjablonen voor het weergeven en manipuleren van reeksen waarden. | |
Bevat algemene numerieke bewerkingen. |
Gevolgtrekking
We hebben C ++ -bibliotheken in detail besproken, samen met hun typen, en de stappen om de bibliotheek te installeren en in te stellen.
We kwamen erachter dat de standaard C ++ -bibliotheek verschillende headers bevat die verschillende functionaliteiten bieden. We kunnen deze standaard bibliotheekheaders gebruiken om een verscheidenheid aan toepassingen in C ++ te ontwikkelen.
Bekijk hier ALLE C ++ Tutorials.
Aanbevolen literatuur
- Bibliotheekfuncties in C ++
- Standard Template Library (STL): een korte introductie
- Een compleet overzicht van C ++
- 70+ BESTE C ++ Tutorials om GRATIS C ++ Programmeren te leren
- I / O formatteren: printf, sprintf, scanf Functies in C ++
- Basis invoer- / uitvoerbewerkingen in C ++
- Stringfuncties in C ++: getline, subtekenreeks, stringlengte en meer