ID do artigo: 815065 - Última revisão: terça-feira, 4 de dezembro de 2007 - Revisão: 5.11 O que é uma DLL?
Nesta páginaSumárioEste artigo descreve o que é uma biblioteca de vínculo dinâmico (DLL) e os diversos problemas que podem ocorrer ao usar DLLs. Em seguida, este artigo descreve alguns problemas avançados que você deve considerar ao desenvolver suas próprias DLLs. Descrevendo o que uma DLL é, este artigo descreve métodos de vinculação dinâmicos, dependências DLL, pontos de entrada DLL, exportando funções DLL e ferramentas de solução de problemas de DLL. Este artigo termina com uma comparação de alto nível das DLLs para o Microsoft .NET Framework assemblies. INTRODUÇÃOPara os sistemas operacionais Microsoft Windows que estão listados na seção "Aplica-se a", grande parte da funcionalidade do sistema operacional é fornecida pelas bibliotecas de vínculo dinâmico (DLL). Além disso, quando você executar um programa em um desses sistemas operacionais do Windows, grande parte da funcionalidade do programa pode ser fornecida por DLLs. Por exemplo, alguns programas podem conter muitos diferentes módulos e cada módulo do programa é contido e distribuído em DLLs. O uso de DLLs ajuda promover modularization de código, reutilização de código, uso de memória eficiente e reduzido espaço em disco. Portanto, o sistema operacional e os programas carregam mais rápido, executados mais rapidamente e levar menos espaço em disco no computador. Quando um programa usa uma DLL, um problema que é chamado de dependência pode causar a não execução do programa. Quando um programa usa uma DLL, uma dependência é criada. Se outro programa sobrescreve e quebras essa dependência, o programa original não pode executar com êxito. Com a introdução do Microsoft .NET Framework, a maioria dos problemas de dependência foram eliminados usando assemblies. Mais InformaçõesO que é uma DLL?Uma DLL é uma biblioteca que contém código e dados que podem ser usados por mais de um programa ao mesmo tempo. Por exemplo, em sistemas operacionais Windows, a DLL Comdlg32 executa comuns funções relacionadas à caixa de diálogo. Portanto, cada programa pode usar a funcionalidade contida nessa DLL para implementar uma caixa de diálogo Abrir. Isso ajuda a promover a reutilização de código e uso de memória eficiente.Usando uma DLL, um programa pode ser modularizado em componentes separados. Por exemplo, um programa de contabilidade pode ser vendido pelo módulo. Cada módulo pode ser carregado em programa principal em tempo de execução se o módulo que está instalado. Porque os módulos são separados, o tempo de carregamento do programa é mais rápido e um módulo é carregado somente quando essa funcionalidade é solicitada. Além disso, as atualizações são mais fáceis aplicar a cada módulo sem afetar outras partes do programa. Por exemplo, você pode ter um programa de folha de pagamento e taxas de imposto alterar cada ano. Quando essas alterações são isoladas para uma DLL, você pode aplicar uma atualização sem precisar criar ou instalar o programa todo novamente. A lista a seguir descreve alguns dos arquivos que são implementados como DLLs em sistemas operacionais Windows:
Vantagens DLLA lista a seguir descreve algumas das vantagens que são fornecidas quando um programa usa uma DLL:
Dependências DLLQuando um programa ou uma DLL usa uma função de DLL na DLL de outro, uma dependência é criada. Portanto, o programa não está mais auto-suficientes e o programa pode enfrentar problemas se a dependência é quebrada. Por exemplo, o programa não pode executar se ocorrer uma das seguintes ações:
A lista a seguir descreve as alterações foram introduzidas no Microsoft Windows 2000 e nos sistemas operacionais do Windows posteriores para ajudar a minimizar problemas de dependência:
Ferramentas de solução de problemas de DLLVárias ferramentas estão disponíveis para ajudar a solucionar problemas DLL. As ferramentas a seguir são algumas dessas ferramentas.Dependency WalkerA ferramenta Dependency Walker pode verificação recursivamente para todas as DLLs dependentes são usados por um programa. Quando você abrir um programa no Dependency Walker, o Dependency Walker executa as seguintes verificações:
drive\Arquivos visual Studio\Common\Tools DLL universal problema SolverA ferramenta Solver de problema universal DLL (DUPS) é usada para auditoria, comparar, documento e exibir informações de DLL. A lista a seguir descreve os utilitários que compõem a ferramenta DUPS:
247957
(http://support.microsoft.com/kb/247957/
)
Usando DUPS.exe para resolver problemas de compatibilidade de DLL Banco de dados DLL ajudaO banco de dados DLL Ajuda Ajuda a localizar versões específicas de DLLs que são instaladas por produtos de software Microsoft. Para obter mais informações sobre o banco de dados DLL Ajuda, visite o seguinte site:http://support.microsoft.com/dllhelp/
(http://support.microsoft.com/dllhelp/)
Desenvolvimento de DLLEsta seção descreve os problemas e requisitos que você deve considerar ao desenvolver suas próprias DLLs.Tipos de DLLsQuando você carregar uma DLL em um aplicativo, dois métodos de vinculação permitem que você chamar as funções DLL exportadas. Os dois métodos de vinculação são vinculação dinâmica do tempo de carregamento e a vinculação dinâmica do tempo de execução.Tempo de carregamento vinculação dinâmicaEm tempo de carregamento dinâmico vinculando, um aplicativo faz chamadas explícitas para funções DLL exportadas como funções locais. Para usar a vinculação dinâmica do tempo de carregamento, fornece um arquivo de cabeçalho (. h) e um arquivo de biblioteca (.lib) importação quando compilar e vincular o aplicativo. Quando você fizer isso, o vinculador fornecerá o sistema com as informações que é necessárias para carregar a DLL e resolver os locais de função DLL exportados em tempo de carga.Vinculação dinâmica do tempo de execuçãoNo tempo de execução vinculação dinâmica, um aplicativo chama a função LoadLibrary ou função LoadLibraryEx carregar a DLL em tempo de execução. Após a DLL é carregada com êxito, use a função de GetProcAddress para obter o endereço da função DLL exportado que você deseja chamar. Quando você usar a vinculação dinâmica do tempo de execução, você não precisa um arquivo de biblioteca de importação.A lista a seguir descreve os critérios de aplicativo para quando a vinculação dinâmica do uso tempo de carregamento e quando usar a vinculação dinâmica do tempo de execução:
Ponto de entrada DLLQuando você cria uma DLL, opcionalmente, você pode especificar uma função de ponto de entrada. A função do ponto de entrada é chamada quando processos ou segmentos se anexam a DLL ou desanexado próprios da DLL. Você pode usar a função do ponto de entrada ao inicializar estruturas de dados ou destruir estruturas de dados conforme exigido pela DLL. Além disso, se o aplicativo é multithreaded, você pode usar o armazenamento local de thread (TLS) para alocar a memória é particular para cada thread a função do ponto de entrada. O código a seguir é um exemplo de função de ponto de entrada DLL.A função do ponto de entrada somente deve executar tarefas de inicialização simples e não deve chamar qualquer DLL carregando ou funções de finalização. Por exemplo, na função de ponto de entrada, você não deve direta ou indiretamente chamar a função LoadLibrary ou a função LoadLibraryEx. Além disso, você não deve chamar a função FreeLibrary quando o processo está sendo encerrado. Observação Em aplicativos multissegmentados, certifique-se de que o acesso para a DLL é sincronizada dados globais (thread safe) para evitar corrupção de dados possíveis. Para fazer isso, use o TLS para fornecer dados exclusivos para cada thread. Exportando funções DLLPara exportar funções DLL, adicionar uma palavra-chave de função para as funções exportadas DLL ou criar um arquivo de definição (.def) do módulo que lista as funções DLL exportadas.Para usar uma palavra-chave de função, você deve declarar cada função que você deseja exportar com a seguinte palavra-chave: __declspec(dllexport) Para usar funções exportadas DLL no aplicativo, você deve declarar cada função que você deseja importar com a seguinte palavra-chave:__declspec(DllImport) Normalmente, você usaria um arquivo de cabeçalho que tem uma instrução Definir e uma instrução ifdef para separar a instrução de exportação e a instrução de importação.Você também pode usar um arquivo de definição de módulo para declarar funções DLL exportadas. Quando você usar um arquivo de definição de módulo, não é necessário adicionar a palavra-chave de função para as funções DLL exportadas. No arquivo de definição de módulo, declare a instrução LIBRARY e instrução EXPORTS para a DLL. O código a seguir é um exemplo de um arquivo de definição. DLL de amostra e aplicativoNo Microsoft Visual C++ 6.0, você pode criar uma DLL selecionando o tipo de projeto de Biblioteca de vínculo dinâmico do Win32 ou o tipo de projeto MFC AppWizard (dll).O código a seguir é um exemplo de uma DLL que foi criado no Visual C++ usando o tipo de projeto de Biblioteca de vínculo dinâmico do Win32. No tempo de execução vinculação dinâmica, você usar código semelhante ao seguinte código para chamar o SampleDLL.dll exportados função de DLL.
O assembly do .NET FrameworkCom a introdução do Microsoft .NET e .NET Framework, a maioria dos problemas associados com DLLs foram eliminada usando assemblies. Um assembly é uma unidade lógica de funcionalidade que é executado sob o controle do .NET common language runtime (CLR). Um assembly fisicamente existe como um arquivo .dll ou como um arquivo .exe. No entanto, internamente um assembly é muito diferente de uma DLL do Microsoft Win32.Um arquivo do assembly contém um manifesto de assembly, metadados de tipo, código Microsoft intermediate language (MSIL) e outros recursos. O manifesto do assembly contém os metadados de assembly fornecem todas as informações necessárias para um assembly ser autodescritivos. As informações a seguir estão incluídas no manifesto do assembly:
A lista a seguir descreve alguns dos recursos de assemblies comparados aos recursos de Win32 DLLs:
ReferênciasPara obter mais informações sobre DLLs e as classes assemblies, visite os seguintes sites: Conflitos de DLL http://msdn2.microsoft.com/en-us/library/ms811694.aspx (http://msdn2.microsoft.com/en-us/library/ms811694.aspx) Implementando compartilhamento em aplicativos de componentes lado a lado http://msdn2.microsoft.com/en-us/library/ms811700.aspx (http://msdn2.microsoft.com/en-us/library/ms811700.aspx) Como criar e serviço isolados de aplicativos e assemblies lado a lado para o Windows XP http://msdn2.microsoft.com/en-us/library/ms997620.aspx (http://msdn2.microsoft.com/en-us/library/ms997620.aspx) Simplificando a implantação e resolvendo conflitos de DLL com o .NET Framework http://msdn2.microsoft.com/en-us/netframework/aa497268.aspx (http://msdn2.microsoft.com/en-us/netframework/aa497268.aspx) Guia do desenvolvedor .NET Framework: assemblies http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx) Vinculação dinâmica do tempo de execução http://msdn2.microsoft.com/en-us/library/ms685090.aspx (http://msdn2.microsoft.com/en-us/library/ms685090.aspx) Armazenamento local de thread http://msdn2.microsoft.com/en-us/library/ms686749.aspx (http://msdn2.microsoft.com/en-us/library/ms686749.aspx) A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 815065
(http://support.microsoft.com/kb/815065/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início