Ho un exe che dipende da libeay32.dll. Entrambi compilati per 32 bit.windows 7 PATH errato a 64 bit durante il caricamento di una libreria a 32 bit per 32 bit exe
Ho copiato l'exe in C: \ Programmi (x86) \ app \ bin e la DLL in C: \ Programmi (x86) \ app \ lib. Per garantire il corretto funzionamento, ho aggiunto C: \ Programmi (x86) \ app \ lib al percorso.
Su Windows 7 64 bit, quando eseguo l'exe, ho ottenuto un errore libeay32.dll non trovato.
Utilizzando dependency walker per 32 bit, la libreria si trova correttamente in C: \ Programmi (x86) \ app \ lib. Utilizzando sysinternal process explorer l'app viene eseguita correttamente. Anche l'uso di cmd funziona. Utilizzando Dipendente Walker per 64 bit, posso vedere le librerie mancanti. Anche la copia dei due file insieme o dll su syswow64 funziona perfettamente.
Se l'applicazione è stata compilata per 32 bit ...
finestre Perché isnt alla ricerca di 32 biblioteche bit? Perché le librerie non sono state risolte se la directory è già sul percorso?
La mia ipotesi è che w7 sta ignorando il percorso, ma in base a questo: http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx non dovrebbe !.
Perché non posso eseguire il mio exe con dipendenze che si trovano sul percorso? Devo registrare la biblioteca o qualcosa del genere?
Tutte le idee saranno molto apprezzate.
EDIT:
Il programma sua correttamente lanciato/eseguito quando fatto dall'inizio menu-> programma, ma non direttamente sul .exe ... WTF?
Utilizzando ProcMon sembra essere il tentativo di aprire (notare la mancanza di " "): "C: \ Program Files (x86) \ myapp \ terze parti \ openssl \ libeay32.dll" ma nel percorso la sua corretto (ricontrollato: "C: \ Program Files (x86) \ myapp \ terze parti \ openssl")
RISPOSTA ?: c'è uno scenario di know/bug per cui l'impostazione "C: \ Program Files (x86) "in path, lead windows tenta di caricare" C: \ Program Files (x86) "invece ???? (vedi utilizzo procmon senza NESSUN filtro)
Windows 7 bug x64?
Per quanto ne so, PATH viene consultato solo per individuare un EXECUTABLE. Una Lib o una DLL non possono essere eseguite da sole - possono supportare solo un altro eseguibile. – Arun
@Arun - Windows utilizza il percorso per individuare le DLL. Vedi http://msdn.microsoft.com/en-us/library/7d83bc18.aspx – shf301
Il mio male, riprendo. Sì, lo fa. Grazie mille per aver corretto il mio errore! – Arun