Newsgroup: it.comp.os.win.windows7
Titolo: PATH e dll

Ciao,
ho notato che windows cerca le dll necessarie a eseguire un programma 
(nello specifico parlo delle librerie Qt4) prima nei percorsi definiti 
nella variabile PATH e poi nella cartella dell'eseguibile.
Personalmente lo trovo sbagliato perchï¿œ se fornisco le dll nella 
cartella stessa dell'exe dovrebbe utilizzare prima quelle!
C'ï¿œ modo di cambiare questo comportamento?
Grazie
Marco

"Marco Trapanese"  ha scritto nel messaggio 
news:iubv4v$a31$1...@tdi.cu.mi.it...

Certo, nella variabile ambiente PATH, aggiungi all'inizio della stessa (non 
alla fine) la cartella dell'eseguibile; in questo modo sarï¿œ la prima ad 
essere trovata.

 prima ad essere trovata.
Non intendevo questo.
Spiego meglio con un esempio banalissimo: scrivo programmi sia con le 
QT4 che con le PyQT4. Entrambe utilizzano le dll QtCore4.dll e 
QtGui4.dll ma NON sono le stesse e i software funzionano solo con le 
librerie corrette, ovviamente :)
Se dovessi utilizzare la variabile PATH nel modo classico, quindi 
indicando il percorso per le dll necessarie dovrei modificarla ogni 
volta che volessi lanciare un programma Python o C++ (che fanno uso 
delle Qt4) e per assurdo non potrei lanciarli contemporaneamente.
Anche il tuo suggerimento non ï¿œ applicabile in quanto per ogni programma 
dovrei mettere in testa alla variabile PATH il suo percorso ma cosï¿œ sarï¿œ 
sempre il primo della lista a "comandare" con il risultato che prenderï¿œ 
quella dll, che magari ï¿œ sbagliata.
Viceversa la soluzione piï¿œ semplice ï¿œ quella di distribuire nella stessa 
cartella l'eseguibile e il set di dll necessarie. Vorrei solo che a 
prescindere da cosa vi sia in PATH, windows cercasse *prima* nella 
cartella dell'eseguibile, *poi* nella variabile di ambiente. Il che ï¿œ 
anche ragionevole visto che se mi prendo la briga di fartele trovare lï¿œ 
ï¿œ perchï¿œ voglio che usi quelle ;)
Ciao!
Marco


perï¿œ questo ï¿œ quello che giï¿œ avviene, cioï¿œ nel senso che con la PATH, 
windows cerca prima nel primo percorso, poi nel secondo e cosi via finchï¿œ 
non trova ciï¿œ che cerca.
Giustamente, questo discorso non ï¿œ applicabile nel caso di piï¿œ programmi. 
Perï¿œ toglimi una curiositï¿œ,  una dll specifica con lo stesso nome, non 
dovrebbe essere uguale per tutti i programmi?  puï¿œ variare la versione della 
dll, ma la sostanza dovrebbe essere uguale per tutti i programmi no?
Non ha senso (secondo me) che ogni programma abbia una sua dll con lo stesso 
nome di altre dll di altri programmi e che queste siano incompatibili fra di 
loro.

 incompatibili fra di loro.
Dillo a quelli della Nokia!
Addirittura nell'sdk vi sono diverse copie della stessa libreria 
(QtCore4.dll e QtGui4.dll ad esempio) compilate in maniera differente: 
una con minwg e l'altra con visual studio.
Sono "indistinguibili" (almeno per quanto ne sappia) ma se prendi quella 
sbagliata il programma non funziona...
Marco


Uhm strano, proprio perchï¿œ sono delle dll, se il sorgente ï¿œ lo stesso, a 
prescindere da come vengano compilate il codice oggetto dovrebbe essere lo 
stesso.
Di piï¿œ non so, perï¿œ ripeto dovresti cercare da qualche parte del tuo "rad" o 
"ide" l'opzione in cui ti permette di specificare il percorso in cui il 
programma deve andare a cercare le librerie e li indicare quello 
dell'eseguibile.
Io credo sia questo l'unico modo.
Del resto quando fai il building dell'applicazione lui prende le varie 
librerie e risorse e le mette insieme, e di conseguenza se non fai un 
"all-inclusive" nell'exe (es come avviene in delphi) necessariamente devi 
poter specificare dove queste librerie e risorse devono essere reperite 
dall'eseguibile. 

 reperite dall'eseguibile.
Ok, indagherï¿œ meglio su questa strada.
Grazie!
Marco