Esta pode ser uma pergunta muito noobie, mas no mundo atual de desenvolvimento de aplicativos da web, muitos programadores não precisam lidar muito com DLLs e, portanto, não se preocupam em aprender sobre seu propósito.
Então, o que é uma dll?
- Para que isso é usado?
- Como funciona?
- Como você cria um?
- Em que situações é apropriado criar um?
Disseram-me que as DLLs são usadas para armazenar bibliotecas de funções, mas, além disso, não sei muito. Espero que alguém aqui possa me esclarecer para que eu possa finalmente parar de me perguntar o que todos aqueles arquivos .dll em meu diretório do Windows estão fazendo.
Respostas:
Uma DLL é uma biblioteca de vínculo dinâmico. É uma coleção de códigos e / ou dados, que podem ser usados por vários aplicativos (ou outras bibliotecas / módulos).
Assim, por exemplo, métodos comuns para processar arquivos, trabalhar com componentes GUI, etc. são disponibilizados em bibliotecas para que vários aplicativos possam usar a mesma funcionalidade. Isso não apenas reduz a necessidade de construir o mesmo material várias vezes, mas também garante que, por exemplo, as caixas de diálogo comuns sejam as mesmas entre os aplicativos.
As bibliotecas podem ser carregadas em tempo de execução e, portanto, compartilhadas entre diferentes aplicativos simultâneos. Isso é chamado de vinculação dinâmica.
Em alguns casos, a biblioteca pode ser incluída no próprio aplicativo. Isso é conhecido como vinculação estática. A vinculação estática torna a implantação mais fácil ao custo da flexibilidade, pois aplicativos diferentes carregam, cada um, a mesma cópia da DLL.
No entanto, a vinculação estática nem sempre é uma opção. Por exemplo, você não pode vincular estaticamente um aplicativo .NET. O usuário deve ter as bibliotecas .NET para executar um aplicativo .NET e as bibliotecas (ou assemblies como são chamados no .NET) são carregadas no tempo de execução.
DLLs são criadas pelas mesmas ferramentas usadas para criar aplicativos. Os detalhes específicos dependem muito das ferramentas utilizadas.
fonte
DLL = Dynamic Link Library
O nome é bastante descritivo do que eles realizam.
Biblioteca
Permite isolar o código de um domínio de problema específico em um único local. Em seguida, compartilhe isso entre vários aplicativos. A biblioteca pode ser trocada por outra a qualquer momento para corrigir bugs ou adicionar funcionalidade.
Ligação
Você pode "Vincular" a biblioteca a um aplicativo para que a lógica na biblioteca não seja compilada diretamente no aplicativo.
Dinâmico
A biblioteca pode ser carregada sob demanda. Em vez de carregar um EXE único gigantesco na memória, o sistema operacional pode carregar apenas as partes necessárias. Além disso, se uma DLL for compartilhada entre aplicativos, o sistema operacional pode otimizar como a biblioteca é carregada e compartilhá-la entre os aplicativos.
fonte
DLL (biblioteca de vínculo dinâmico) arquivos podem ser descritos como pequenos "subprogramas", cujo objetivo é ajudar um programa maior a funcionar bem. Eles fornecem um meio de vincular vários recursos de hardware e software (em vários pontos em suas sessões de tempo de execução) ao programa executável principal no qual se baseiam, "conforme a necessidade surgir". Isso elimina a necessidade de carregar tudo o que está relacionado ao programa executável principal na RAM (memória de acesso aleatório) do computador quando o programa é executado pela primeira vez.
Os recursos de software transportados por DLLs incluem código para as várias funções do programa que não são realmente necessárias para manter o programa em execução: isto é, funções que só precisam ser chamadas em determinados momentos durante uma determinada sessão de computação e podem realmente nem precisar ser chamado. Carregar essas funções (e pode haver um número considerável delas para um determinado programa) na RAM do computador quando o programa é executado pela primeira vez e mantê-las lá durante a sessão seria um desperdício de espaço de RAM - que é considerado como um prêmio.
Um grande avanço:
Considerações:
fonte
Biblioteca vinculada dinamicamente.
Para dar um exemplo, se você tiver a DLL de outra pessoa carregada em seu aplicativo, poderá usar bits de programação dela.
Você pode carregar uma DLL que gera números aleatórios que sempre começam com "5" ou algo assim.
Em seu programa você pode chamar CrazyDLL.GenerateRandomNumbersSorta () e ele retornará o número.
Para um exemplo do mundo real, eu tenho o DLL que combina 4 caixas de texto (você as usaria para digitar endereços IP) e ele aceita automaticamente apenas números menores que 256 e controla o pressionamento da tecla backspace para pular para uma caixa de texto anterior.
Eu criei uma DLL com esse código e agora tudo o que tenho a fazer é arrastar e soltar mais daquelas coleções de caixa de texto de endereço IP sem ter que duplicar todo o código repetidamente.
A mesma DLL também tem função para converter endereços IP em strings hexadecimais e outros códigos úteis.
fonte
Da Biblioteca MSDN :
Uma biblioteca de vínculo dinâmico (DLL) é um módulo que contém funções e dados que podem ser usados por outro módulo (aplicativo ou DLL).
fonte
DLL = Dynamic
LoadLink Library. Como lhe foi dito, é basicamente uma coleção de funções, classes C ++ e / ou variáveis globais. Você pode carregar a DLL estaticamente (ou seja, o sistema operacional carrega automaticamente quando seu programa é iniciado) ou dinamicamente (seu programa carrega explicitamente), ponto em que as funções e coisas dentro da DLL estão disponíveis para seu programa.Criar um é semelhante a criar um EXE, exceto que não precisa haver um
main()
função. Existem diretivas de vinculador para instruir o vinculador a criar uma DLL em vez de um EXE.O principal motivo pelo qual você deseja fazer isso é encapsular algum código em um lugar e usá-lo a partir de vários exe, em vez de vincular o código a cada um.
Um motivo um tanto histórico é que seu exe pode ser menor, já que parte do código está fisicamente localizado em um arquivo diferente. Isso significa que a quantidade de espaço ocupado na memória pelo seu exe pode ser menor. Em sistemas modernos, isso é menos problemático do que costumava ser, embora ainda possa ser um problema no Windows Mobile.
fonte