20081002

DLL - Dynamic-Link Library

Esta é o primeiro de muitos posts sobre DLL

Respire fundo, coragem e vamos lá...

DLL - Dynamic-Link Library(em português Bibliotela de Ligação Dinâmica)

No sistema Win32, os arquivos DLL são organizações em seções.

Os códigos em uma DLL geralmente é compartilhado entre todos os processos que o utilizam, ou seja, cria um único espaço na memória física.

Os comandos uzados na DLL servem para manipular os componentes do banco de dados e para implementar as regras de integridade.

Devemos levar em consideração a ferramenta de compilação que utilizamos, por exemplo no Delphi o cabeçalho do código fonte, a palavra reservada library no lugar de program. No fim do arquivo, as funções a serem exportadas são listadas na cláusula exports. O Delphi não requer que os arquivos LIB importem funções de DLL. Para fazer uma ligação a uma DLL, a palavra reservada external é usada na declaração da função. No Visual Basic (VB), apenas a ligação em tempo de execução é suportada, porém, com o uso das funções LoadLibrary e GetProcAddress, declarações de funções importadas são permitidas. Ao importar funções de DLL através de declarações, o VB irá gerar um erro em tempo de execução se o arquivo DLL não for encontrado. O desenvolvedor pode então tratar o erro apropriadamente. E no Microsoft Visual C++(MSVC) provê várias extensões ao C++ padrão, o que permite que funções sejam importadas ou exportadas diretamente no código. Este modelo foi adotado por outros compiladores C e C++ para Windows, incluindo a versão windows do GCC. Essas extensões usam o atributo __declspec antes de uma declaração de função. Quando nomes externos seguem as convenções de nomes do C, eles também devem ser declarados como extern "C" no código em C++, para prevenir o uso das convenções de nomes do C++. Além da especificação das funções como importadas ou exportadas ao usar os atributos da __declspec, elas podem ser listadas nas seções IMPORT ou EXPORTS do arquivo DEF usado pelo projeto. Este arquivo é processado pelo linker, e não pelo compilador, e portanto não é específico do C++.A compilação de DLL gerará um arquivo DLL e um LIB. O LIB é usado para a ligação de uma DLL em tempo de compilação; ele não é necessário para a ligação em tempo de execução. A não ser que sua DLL seja um COM server, o arquivo DLL deve ser colocado em um dos diretórios listados na variável de ambiente PATH, ou no diretório de sistema padrão, ou no mesmo diretório do aplicativo. As DLL COM servers são registradas usando o regsvr32.exe, que coloca a localização e seu ID global único (GUID) no registro. Os programas podem então usar a DLL se buscarem pelo seu GUID no registro para acharem sua localização.

Este link tem API's bastante úteis xD.


Nenhum comentário: