Newsgroup: it.comp.lang.visual-basic
Titolo: dll

Ciao, ho letto in un manuale che un programma
scritto in VB compilato non puo' essere eseguito
se in Windows non sono caricate determinate DLL
in quanto queste ultime traducono il codice compilato
in codice eseguibile per Windows.
Potreste spiegarmi come avviene il tutto?

 ha scritto

A grandi linee (ma proprio grandi):
Fin (se non ricordo male) dal GwBasic (compilato) era necessario installare
anche un BRun....EXE
Ogni eseguibile (compilato, appunto) ha bisogno (almeno) di un "RunTime",
ovvero un set (più o meno complesso, grande, spezzettato, differenziato,
etc.) di "librerie generiche" che vengono chiamate dalle varie istruzioni
presenti nell'eseguibile.
Un esempio: Se, spesso e volentieri, devo eseguire una certa operazione,
come (sempre per esempio) esporre una finestra o un rettangolo sul video,
perchè mai inserire le istruzioni necessarie in _ogni_ eseguibile? E'
certamente preferibile disporre di uno o più file di "RunTime" che
provveda/no a questa funzionalità (e a molte altre) in modo che, una volta
installate, sono disponibili per ogni _altro_ eseguibile dello stesso
tipo/genere.
Come avvenga questa cosa, francamente, non lo so. Suppongo che ogni
eseguibile "chieda" al sistema operativo di cercare e caricare il runtime di
cui ha bisogno e poi, in funzione di quanto deve fare, dica "ora esegui le
istruzioni a partire dall'entry point tal dei tali, poi torna da me che ho
altro da fare".

 presenti nell'eseguibile.
Detto fra noi, questo non sempre è vero!-) Si possono creare exe che
includono il codice delle librerie: anziché linkarle dinamicamente (dll) si
linkano al momento della creazione dell'exe.Ovviamente non è il caso di vb5
e 6 i cui exe sono sì object, ma richiedono un bel po' di librerie (dll)
perché è stato scelto, per comprensibili problemi di dimensioni degli exe
risultanti, di lasciare le funzioni in librerie richiamate dinamicamente al
momento dell'esecuzione - queste sono appunto le dll che devono essere
necessariamente pre-installate; né quello di gwbasic, vb1-4 e 
vb.net
 che
sono linguaggi interpretati, il che significa che l'exe è in realtà un
codice che viene interpretato/compilato al momento dell'esecuzione da un
programma che dev'essere anch'esso pre-installato.
--
rumplestiltskin

 Detto fra noi, questo non sempre è vero!-)
Vero, ma, detto fra noi, ti pare che la domanda fatta possa "accettare" una
risposta che vada più in là del ... default? ;-)

 e 6 i cui exe sono sì object, ma richiedono un bel po' di librerie (dll)
appunto non in vb6 .....ma la parte che non è sempre vero che non ho capito
..
da quando e come puoi includere il codice delle librerie?
ciao :)

 da quando e come puoi includere il codice delle librerie?
Da quando: che io mi possa ricordare, da quando ho iniziato a programmare,
prima non so (ma prima non c'era molto da programmare!-)
Come: a seconda del linguaggio e del sistema. P.es. con i primi compilatori
e sistemi non c'era alternativa. Con QB 4.5 c'era la possibilità di creare
qualcosa di vagamente simile ad una dll DOS (le qlb se ben ricordo). Sotto
Windows basta linkare l'eseguibile opportunamente (
p.es
., un programma C per
Windows può girare senza dll addizionali).
--
rumplestilskin

 Windows può girare senza dll addizionali).
si  parlava di vb però :)
cmq si certo in c si puo' fare
ciao

 cmq si certo in c si puo' fare
Si parlava anche di gwbasic, se ben ricordo... Comunque, data la domanda
iniziale, mi era parso giusto chiarire un punto frequentemente discusso.
Nella mia risposta escludevo che la cosa si potesse fare con vb1-6 e dotnet,
non lasciavo dubbi in merito.
--
rumplestilskin