Diskuze: DLL knihovny

Ostatní jazyky Petr Lite Petr DLL knihovny

Avatar
android7
Člen
Avatar
android7:

Dobrý den,
rád bych zjistil něco o knihovnách DLL.
poradíte, co se snimi dá dělat?

 
Odpovědět  +1 26.6.2014 15:52
Avatar
Michael Škrášek:

Ahoj, moc věcí o tom nevím :D, také bych rád věděl o tom víc. Pokusím se to přiblížit s mými znalostmi. DLL - (Dynamic-link library) soubory mohou být třeba (nevím jestli je to správně - odvodil jsem si to :D) databáze, rozšíření programů, activex ... některé se dají otevřít otevřít v programech - ty co používám já: dotPeek, Resource hacker ...

Jinak se to dá i určitě "gůglit" tak pro příště :D
např. http://cs.wikipedia.org/wiki/DLL

Editováno 26.6.2014 16:34
Nahoru Odpovědět 26.6.2014 16:33
Proč to dělat složitě, když to jde jednoduše.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na android7
Jiří Gracík:

V podstatě je to jen balík tříd a metod. Pokud bys například udělal několik tříd pro práci s řetězci, tak si je můžeš zabalit do knihovny a pak je pomocí té knihovny používat v dalších aplikacích.

Nahoru Odpovědět 26.6.2014 16:39
Creating websites is awesome till you see the result in another browser ...
Avatar
Luboš Běhounek (Satik):

DLL knihovna je uvnitr v podstate to same, co EXE - jen nejaky kod, ktery spoustis.

Rozdil je v tom, jak ten kod spoustis - kod v EXE se spousti spustenim toho EXE, knihovnu musis nejdriv nahrat do nejakeho EXE, aby jsi jeji kod mohl pouzivat.

Nahoru Odpovědět 26.6.2014 16:47
:)
Avatar
android7
Člen
Avatar
android7:

díky,
takže s tím můžu okopčit kus programu nebo proměnou
.
A co je koficient C?

 
Nahoru Odpovědět 26.6.2014 16:50
Avatar
Odpovídá na android7
Michael Škrášek:

Úplně jsem nepochopil tvoji otázku

takže s tím můžu okopčit kus programu nebo proměnou
Nahoru Odpovědět 26.6.2014 16:53
Proč to dělat složitě, když to jde jednoduše.
Avatar
android7
Člen
Avatar
android7:

to nebyla otázka, ale náznak toho, že tomu takňák rozumím

 
Nahoru Odpovědět 26.6.2014 16:55
Avatar
Odpovídá na android7
Michael Škrášek:

aha
a není to náhodou koeficient ??

Nahoru Odpovědět 26.6.2014 16:57
Proč to dělat složitě, když to jde jednoduše.
Avatar
android7
Člen
Avatar
android7:

jěště otázečka na grafiku (napsal jsem to do sekce Orbázky)

 
Nahoru Odpovědět 26.6.2014 16:58
Avatar
android7
Člen
Avatar
android7:

volací konvence C (tak sem se netrafil)

 
Nahoru Odpovědět 26.6.2014 16:59
Avatar
Nahoru Odpovědět 26.6.2014 17:01
Proč to dělat složitě, když to jde jednoduše.
Avatar
android7
Člen
Avatar
android7:

neva, snad to neni duležitý když to je nepovinný prepínač ;)

 
Nahoru Odpovědět 26.6.2014 17:04
Avatar
Odpovídá na android7
Luboš Běhounek (Satik):

Volací konvence je jak mezi sebou ta aplikace a knihovna komunikují - jak si předávají parametry a výsledky funkcí - jestli třeba přes zásobník nebo přes registry, jejich pořadí apod... :)

Je zbytečné mít stejný kód ve více aplikacích, tak se ta společná část kódu vytrhne a dá do DLL.
V aplikacích ti pak stačí mít jen odkaz na tu společnou knihovnu a načteš ji až při spuštění aplikace.

Editováno 26.6.2014 17:08
Nahoru Odpovědět  +1 26.6.2014 17:06
:)
Avatar
android7
Člen
Avatar
android7:

Díky moc všem.

 
Nahoru Odpovědět 26.6.2014 17:09
Avatar
Panda38
Redaktor
Avatar
Odpovídá na android7
Panda38:

Volací konvence - DLL funkci se předávají parametry přes zásobník. Po ukončení funkce je potřeba parametry ze zásobníku odstranit. U volací konvence C parametry odstraňuje volající funkce (např.: PUSH EAX uloží registr EAX do zásobníku jako parametr, CALL XXX zavolá volanou funkci a ADD ESP,4 posune ukazatel zásobníku a tím parametr odstraní).

U volací konvence Pascal odstraňuje parametry volaná funkce - to znamená že musí posunout ukazatel zásobníku a teprve až potom se vrátit do volané funkce. Nevýhodou konvence Pascal je dost krkolomná práce se zásobníkem (musí si uchovat ze zásobníku návratovou adresu než parametry zruší), mezi volanou a volající funkci nelze vsunout odbočku na jinou funkci (protože by přidala svou návratovou adresu a tím by narušila strukturu zásobníku) a volaná funkce musí znát počet parametrů, což nelze použít u funkcí s proměnlivým počtem parametrů (jako např. printf).

Jedinou výhodou konvence Pascal je malá úspora velikosti programu používajícího DLL knihovnu. Zřejmě proto tuto konvenci Microsoft (dost nešťastně) zvolil u DLL knihoven. Interně ale programy i DLL knihovny používají C konvenci. Většinou lze ponechat implicitní volání Pascal, protože se u DLL téměř všude používá. Pokud by byla konvence špatně zvolena, projeví se to pravděpodobně chybnou funkcí a tvrdou havárií programu.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 27.6.2014 16:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.