segunda-feira, 4 de abril de 2011

DLLs

Se você utiliza o Windows há algum tempo, provavelmente já teve o dissabor de receber mensagens de erro do tipo “Este programa causou um erro na 'nome estranho'.DLL e será fechado”, por exemplo, e sido forçado reiniciar o computador para contornar o problema. No entanto, pouca gente sabe o que são esses enigmáticos arquivos DLL, de modo que eu resolvi abordá-los nesta postagem.

Para entender isso melhor, é preciso ter em mente que os “programas” são conjuntos de instruções, em linguagem de máquina, que permitem ao usuário operar o computador. O sistema operacional também é um programa, mas funciona como uma espécie de “software-mãe”, que dá suporte a todos os demais aplicativos.
Nos primórdios da computação, os aplicativos eram constituídos por arquivos executáveis que continham todas as instruções necessárias ao seu funcionamento. No entanto, com a adoção generalizada da interface gráfica e o aumento do tamanho dos softwares, sua simples divisão em múltiplos executáveis deixou de ser eficiente (até porque seus respectivos códigos não podiam ser compartilhados).
Diante disso, os engenheiros da Microsoft criaram as DLLs (Dynamic Link Library), ou seja,“bibliotecas dinâmicas” que permitem aos programadores tirar vantagem da "linkagem dinâmica", onde o código das funções reside numa biblioteca pré-compilada e compartilhada por vários executáveis, gerando arquivos menores e mais fáceis de atualizar.
Numa analogia elementar e tecnicamente inexata, mas que ajuda a entender melhor o assunto, as DLLs estão para o para o software como os drivers estão para os componentes físicos do computador. Em outras palavras, se os drivers fazem uma “ponte” entre o hardware e o SO, as DLLs fazem o mesmo em relação ao SO e os aplicativos, sendo responsáveis por exibir as janelas dos programas, criar sons, conectar o computador à Internet, salvar e carregar arquivos, e por aí vai.
De certa forma, o próprio Windows é uma vasta coleção DLLs, já que sua função precípua (como a de qualquer SO) é garantir que as demais aplicações funcionem sem que tenham de “se preocupar com os detalhes de suas tarefas rotineiras”. (O kernel32.dll, por exemplo, é encarregado de salvar arquivos e gerenciar o uso da memória RAM, enquanto o user32.dll gerencia a área de transferência do sistema e cuida dos menus exibidos na tela, do papel de parede e do ponteiro do mouse).
As DLLs podem ter diversas versões, e aplicativos compilados para operar com uma delas podem não funcionar corretamente com outra mais nova, mais antiga, ou de idioma diferente. Ainda que elas incluam instruções para que somente as mais recentes sobrescrevam as antigas, algumas atualizações podem resultar em comportamento errático ou mesmo inviabilizar o funcionamento de determinados programas.
As versões 9x/ME do Windows eram bem mais susceptíveis ao "inferno das DLLs" do que as mais recentes, mas não custa lembrar que o XP possui uma ferramenta para verificação de integridades dos arquivos do sistema – para convocá-la clique em Iniciar > Executar, digite "sigverif.exe" (sem as aspas) e pressione o botão "OK"; no quadro que se abre em seguida, clique no botão "Iniciar" e aguarde até que o "Verificador de Assinatura de Arquivo" apresente seu relatório.
Outra boa opção para tentar solucionar problemas com DLLs corrompidas ou ausentes é visitar o site http://www.dll-files.com/.
Bom dia a todos e até mais ler.