Pergunta

Se você chamar LoadLibrary sem um caminho (por exemplo, LoadLibrary("whatever.dll"), o Windows geralmente seguem seu algoritmo de busca padrão, a mesma que ele usa para encontrar EXEs.

A minha pergunta é a seguinte: suponha que um aplicativo especifica se manifestam especifica uma versão específica de uma DLL do sistema, digamos, comctl32.dll 6.0. Nesse caso, será LoadLibrary("comctl32.dll") ir imediatamente para a pasta correta side-by-side, ou ele ainda realizar algum tipo de pesquisa?

Foi útil?

Solução

A partir Microsoft:

Os aplicativos podem controlar o local do qual uma DLL é carregada, especificando um caminho completo, usando o redirecionamento DLL, ou usando um manifesto. Se nenhum destes métodos são utilizados, o sistema procura a DLL em tempo de carregamento, conforme descrito neste tópico.

Então, sim, se um manifesto estiver presente, ele irá diretamente para a pasta SxS.

Outras dicas

Para sondar o carregador quando tendo problemas com bibliotecas ausentes, você pode usar o recurso "sxstrace". www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx dá alguns detalhes sobre as dependências entre manifesto e winsxs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top