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.