DLL vs LIB
Uma biblioteca é uma coleção de recursos que podem ser usados para desenvolver aplicativos. Uma biblioteca geralmente é composta de sub-rotinas, funções, classes, valores e tipos. Durante o processo de vinculação (geralmente feito por um vinculador), bibliotecas e executáveis fazem referência uns aos outros. Os arquivos de biblioteca são divididos em bibliotecas estáticas e dinâmicas, dependendo do momento em que as sub-rotinas são carregadas no aplicativo de destino. Assim, os arquivos LIB são bibliotecas vinculadas estaticamente e os arquivos DLL são bibliotecas vinculadas dinamicamente.
O que é DLL?
Dynamic Link Library (mais comumente conhecido como DLL) é uma implementação de biblioteca compartilhada desenvolvida pela Microsoft. Ele usa as extensões.dll,.ocx ou.drv e são usadas nos sistemas operacionais Microsoft Windows e OS/2..dll é usado pelos arquivos DLL normais. E a extensão.ocx é usada por bibliotecas que contêm controles ActiveX e a extensão.drv é usada por arquivos de driver de sistema legado. O formato de arquivo DLL é o mesmo dos arquivos EXE do Windows (arquivos executáveis portáteis em Windows de 32 bits/64 bits e Novo executável em Windows de 16 bits). Portanto, qualquer combinação de código, dados e recursos pode estar contida em arquivos DLL (assim como em arquivos EXE). De fato, os arquivos de dados com o formato de arquivo DLL são chamados de DLLs de recursos. Bibliotecas de ícones (com extensão.icl) e arquivos de fonte (com extensões.fon e.fot) são exemplos de DLLs de recursos.
Componentes chamados de seções formam uma DLL e cada seção tem seus próprios atributos como somente leitura/gravável e executável/não executável. As seções de código são executáveis, enquanto as seções de dados não são executáveis. As seções de código são compartilhadas e as seções de dados são privadas. Isso significa que todos os processos que usam a DLL usarão a mesma cópia do código, enquanto cada processo terá sua própria cópia dos dados. A biblioteca dinâmica primária para Windows é kernel32.dll, que contém as funções básicas (funcionalidade relacionada a arquivo e memória) no Windows. COM (Component Object Model) é a extensão da DLL para OOP (Programação Orientada a Objetos). DLLs convencionais são mais fáceis de usar do que arquivos COM.
O que é LIB?
LIB arquivos são bibliotecas estáticas (também conhecidas como bibliotecas vinculadas estaticamente). Os arquivos LIB contêm uma coleção de sub-rotinas, funções externas e variáveis. Os arquivos LIB são resolvidos em tempo de compilação (em oposição ao tempo de execução). O código é realmente copiado para o aplicativo de destino. Um compilador, vinculador ou fichário fará essa resolução e produzirá um arquivo objeto e um arquivo executável. Esse processo é chamado de processo de compilação estático.
Qual é a diferença entre DLL e LIB?
As bibliotecas LIB podem ser chamadas durante o tempo de compilação, mas as bibliotecas DLL só podem ser chamadas durante o tempo de execução. Os arquivos LIB são significativamente maiores que os arquivos DLL. Um problema muito comum com arquivos DLL é o problema de versão. Isso acontece quando o código da DLL é alterado e o aplicativo usa uma versão errada de uma DLL. Este não é um problema associado aos arquivos LIB. Em termos de reutilização, ao escrever novas versões de sistemas ou aplicativos completamente novos, as DLLs são sempre melhores que as LIBs.