2010-03-17 15 views
8

Su Linux, abbiamo le variabili di ambiente e LD_LIBRARY_PATH per consentire ai programmi di cercare le librerie. Abbiamo una cosa simile su Windows? In particolare Windows 7?Ricerca DLL su Windows

Inoltre, mi piacerebbe conoscere le best practice per l'uso della DLL (dove inserirle, utilizzare envs o no, ecc.), Poiché voglio lavorare su Windows come fanno tutti, e non indugiare sui workaround:)

risposta

8

This MSDN article spiega l'ordine di ricerca predefinito. Cito:

  1. La directory specificata da lpFileName.
  2. La directory di sistema. Utilizzare la funzione GetSystemDirectory per ottenere il percorso di questa directory.
  3. La directory di sistema a 16 bit. Non esiste una funzione che ottenga il percorso di questa directory, ma viene cercata.
  4. La directory di Windows. Utilizzare la funzione GetWindowsDirectory per ottenere il percorso di questa directory.
  5. La directory corrente.
  6. Le directory elencate nella variabile di ambiente PATH. Si noti che questo non include il percorso per applicazione specificato dalla chiave di registro App Paths. La chiave App Paths non viene utilizzata durante il calcolo del percorso di ricerca DLL.

In (1), se collegato staticamente alla libreria stub della DLL, penso che "la directory specificata da lpFileName" sia il percorso del processo di exe.

1

Dai un'occhiata alla guida per le funzioni LoadLibrary e CreateProcess. Questi descrivono i percorsi utilizzati per individuare le DLL e come è possibile modificarle.

0

appare sul currentDir prima poi WinDir e SystemDir anche nel tuo percorso

+1

Non penso che sia vero. La directory corrente è 5 nella lista di ricerca. La prima cosa sulla lista è la cartella in cui è stato trovato l'exe, che spesso non è la directory corrente. –

Problemi correlati