LIB vs DLL
Ao desenvolver software, muitas vezes nos perguntam se queremos usar LIB ou DLLs para conter funções para o aplicativo. LIB é uma biblioteca estática onde funções e procedimentos podem ser colocados e chamados enquanto o aplicativo está sendo compilado. Uma DLL ou biblioteca de vínculo dinâmico executa a mesma função, mas é dinâmica no sentido em que o aplicativo pode chamar essas bibliotecas durante o tempo de execução e não durante a compilação. Isso apresenta algumas vantagens significativas em comparação ao uso de LIB.
Para iniciantes, você teria um único arquivo significativamente maior, pois contém todo o código e vários arquivos menores ao usar DLL. A compilação de suas funções e procedimentos também permitiria uma maior capacidade de reutilização, assim que você estiver satisfeito com as funções na DLL, pois poderá mantê-lo como está em cada versão do aplicativo e não precisar mexer nele. Você também pode usar a mesma DLL se desejar criar outro aplicativo que use as mesmas funções e procedimentos. Você pode vincular diretamente à DLL em vez de copiar o código da fonte, como faria com o LIB.
Um problema com a DLL é quando você altera o conteúdo da DLL. Isso pode causar problemas de controle de versão, nos quais um aplicativo usa a versão incorreta da DLL, causando problemas. Você precisa acompanhar suas DLLs para evitar esses problemas. Você não teria esse problema com o LIB, pois obteria apenas um arquivo grande.
Ao desenvolver o software e escolher a DLL, você ainda teria um arquivo LIB em seu projeto. Porém, diferentemente do uso de LIB, esse arquivo não contém o código das funções e procedimentos, mas apenas os stubs necessários para o programa chamar os procedimentos das DLLs..
Resumo:
1. Uma DLL é uma biblioteca que contém funções que podem ser chamadas por aplicativos em tempo de execução, enquanto LIB é uma biblioteca estática cujo código precisa ser chamado durante a compilação.
2. O uso da LIB resultaria em um único arquivo consideravelmente maior enquanto você terminava com vários arquivos menores com DLLs.
3. DLLs são mais reutilizáveis que LIBs ao escrever novas versões ou aplicativos totalmente novos
4. Os arquivos DLL podem ser usados por outros aplicativos, enquanto os arquivos LIB não podem
5. As DLLs são propensas a problemas de controle de versão, enquanto o LIB não é
6. Você ainda teria um arquivo LIB ao desenvolver software com DLLs, mas ele contém apenas stubs