Nové výhodné předplatné namísto kreditů je tu! Více informací. Upravili jsme také naše provozní podmínky.
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 17 - Knihovny v jazyce C a C++

V minulé lekci, Kompilace v jazyce C a C++ pokračování, jsme se podívali na poslední část kompilace - linkování.

Knihovny jsou nedílnou součástí programování. Obsahuji sadu funkcí a struktur, které spolu úzce souvisí. V článku o kompilaci jsme si řekli, že linker spojí soubory a přepočítá offsety jednotlivých volání. Pravou úlohou linkeru je ale připojení naší aplikace ke knihovnám. Narazí-li linker na použití knihovny, má v podstatě jen dvě možnosti. Buď může zkopírovat kód z knihovny do naší aplikace a nebo zařídit, aby potřebné funkce byly dostupné během běhu aplikace.

Rozdíl mezi statickou a dynamickou knihovnou

Statická knihovna je výsledek prvního přístupu. Kompiler zkopíruje zdrojové kódy z knihovny a umístí je mezi kódy naší aplikace. Statické knihovny mají zpravidla zkratku .a (pro Linux) nebo .lib (pro Windows). Dynamické knihovny se nepřidávají k našemu zdrojovému souboru, ale připojují se k aplikaci až za běhu. To vede na několik problémů, o kterých si řekneme později. Chceme-li použít dynamickou knihovnu, musíme


 

...konec náhledu článku...
Pokračuj dál

Znalosti v hodnotě stovek tisíc získáš za pár korun

Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.

Obsah článku spadá pod licenci Premium, koupí článku souhlasíš s Provozními podmínkami.

Co od nás v dalších lekcích dostaneš?
  • Přístup k jednotlivým lekcím dle způsobu pořízení.
  • Kvalitní znalosti v oblasti IT.
  • Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.

Popis článku

Požadovaný článek má následující obsah:

Řekneme si, jak vygenerovat statickou a dynamickou knihovnu, jak je použít, a jaký je mezi nimi rozdíl.
Článek pro vás napsal Patrik Valkovič
Avatar
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity