Domanda

Se chiami LoadLibrary senza un percorso (ad es. LoadLibrary (" whatever.dll ") , Windows seguirà generalmente il suo algoritmo di ricerca standard, lo stesso utilizza per trovare EXE.

La mia domanda è questa: supponiamo che un manifest dell'applicazione specifichi una versione particolare di una DLL di sistema, diciamo comctl32.dll 6.0. In tal caso, LoadLibrary (" comctl32.dll ") andrà immediatamente nella cartella side-by-side corretta o eseguirà comunque qualche tipo di ricerca?

È stato utile?

Soluzione

Da Microsoft:

  

Le applicazioni possono controllare la posizione da cui viene caricata una DLL specificando un percorso completo, utilizzando il reindirizzamento DLL o utilizzando un manifest. Se nessuno di questi metodi viene utilizzato, il sistema cerca la DLL al momento del caricamento, come descritto in questo argomento.

Quindi sì, se è presente un manifest, andrà direttamente nella cartella SxS.

Altri suggerimenti

Per sondare il caricatore in caso di problemi con librerie mancanti, puoi utilizzare il " sxstrace " caratteristica. www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx fornisce alcuni dettagli sulle dipendenze tra manifest e WinSxs.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top