.[ ČeskéHry.cz ].
staticke knihovny a hlavickove soubory

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
uiii



Založen: 12. 08. 2007
Příspěvky: 251

PříspěvekZaslal: 6. prosinec 2008, 17:28:30    Předmět: staticke knihovny a hlavickove soubory Odpovědět s citátem

Cau, chtěl bych se zeptat jak je to s těma statickejma knihovnama. Nebo spíš jakej je rozdíl mezi použitím statické knihovny a hlavičkového souboru (se souborem s definicí). Když myslím rozdíl, nemyslím tím jako kdy se zabuduje do programu atd, ale spíše jaké proč se to pužívá a tak a ne jinak. Já si myslím, jestli to není náhodou tak, že ty statické knihovny se dají přilinkovat k programu v jakémkoli jazyce, na rozdíl od *.h souboru, který musí být ve stejném jazyce. Je to pravda?
_________________
Twitter
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 6. prosinec 2008, 17:41:24    Předmět: Odpovědět s citátem

Moje zkušenost je taková, že když mám statickou knihovnu (libko), tak to obsahuje nějaké definice. Deklarace jsou pak v hlavičkovém souboru, který je distribuován autorem statické knihovny společně s libkem. Takže není žádné buď a nebo - v normálních situacích je potřeba dostat do programu deklarace (hlavičkový soubor) i definice (libko).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
uiii



Založen: 12. 08. 2007
Příspěvky: 251

PříspěvekZaslal: 6. prosinec 2008, 17:56:35    Předmět: Odpovědět s citátem

Takze v tom pripade to slouzi jen k tomu aby si ten programator co puziva tu knihovnu nemoh precist zdrojovej kod definice.
_________________
Twitter
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 6. prosinec 2008, 18:02:55    Předmět: Odpovědět s citátem

Taky na to tak můžeš koukat. Nebo třeba je kompilace té knihovny tak komplikovaná, že je lepší distribuovat jen header a libko.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 6. prosinec 2008, 18:12:17    Předmět: Odpovědět s citátem

Přesně. Ve VC++ je statický LIB soubor jenom archiv obsahující všechny OBJ soubory, neboli přímo zkompilované CPP soubory (takže compiler nad kódem v LIB souboru může provádět další optimalizace). Z toho plyne, že:
1) Část nastavení tvého projektu musí odpovídat nastavení projektu té static library, jinak se ti to nemusí slinkovat. (některé nastavení té knihovny se dá potlačit a pak to jde)
2) Statické LIB soubory zkompilované jinou verzí VC++ (tím myslím i SP), než používáš, nemusí jít slinkovat s tvým projektem. (někdy to jde..)
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
uiii



Založen: 12. 08. 2007
Příspěvky: 251

PříspěvekZaslal: 6. prosinec 2008, 18:22:51    Předmět: Odpovědět s citátem

Takze ta staticka knihovna je zavisla na jazyku kvuli tomu hlavickovymu souboru narozdil od dynamicky?
_________________
Twitter
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 6. prosinec 2008, 18:34:09    Předmět: Odpovědět s citátem

Jak psal Eosie, statická knihovna se může lišit (a většinou liší) překladač od překladače + v tom ještě hraje roli nastavení překladače při vytváření statické knihovny. Ale tahle "binární nekompatibilita" nemá žádnou souvislost s hlavičkovým souborem.
Dynamická knihovna je úplně něco jinýho - to je samostatnej PE soubor a tudíž musí splňovat PE specifikaci (takže ho musí překladače podle toho vytvářet).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 6. prosinec 2008, 20:06:59    Předmět: Odpovědět s citátem

dynamicka vs. staticka knihovna - kdyz pominu to jak to funguje uvnitr (popsali Augi a Eosie), tak u staticke knihovny jde o to ze vysledkem tveho snazeni je jedno EXE ktere ma v sobe vsechno. Naopak u dynamicke knihovny je cilem tveho snazeni male EXE tve samotne aplikace + DLL soubor kde mas napr. to sve API. Oba pristupy maji sva pro a proti a clanku na ta temata byly napsany tuny, doporucuju proto pogooglit a dozvis se dostatek informaci.

Jeste dodam ze to, ze se nejaky soubor jmenuje DLL z nej automaticky nedela dynamickou knihovnu pro tebe zrovna pouzitelnou. Zalezi co se v te DLL vali - ciste C++ aplikace (potrebujes nejaky headery abys vedel co se ma z dane knihovny volat, nebo aspon vedet co v ni teda je), neco co definuje COM rozhrani (tady jsou potreba headery + knihovna zaregistrovana v systemu (pokud nejsi masochista s hranim si s DllGetClassObject a modlenim se ze to pretypujes na spravni COM rozhrani) a tudiz jiny pristup k objektum z dane DLL nebo nedejboze .NET ze (kde je to zase uplne jinak).

jinak pokud jsme stale u problemu struktura cmd-line programu pro nasazeni GUI, mel bys proste napsat cmd-line program, ktery konecne udela to co potrebujes a az potom premyslet jak to zobecnit a udelat genialni. zacina to tu zavanet perfekcionalismem, ktery je u vyvoje software znacne nezadouci - vede k zeslozitovani ulohy a k jejimu nedokonceni - protoze ve vysledku uz toho navymyslis tolik ze to ani udelat nepujde.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna