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 ligação dinâmica (DLL) é e os vários problemas que poderão ocorrer quando utilizar DLLs. Em seguida, este artigo descreve alguns problemas avançados que deve considerar quando desenvolver as suas próprias dll. Na descrição que uma DLL é, este artigo descreve métodos de ligação dinâmicos, dependências DLL, pontos de entrada DLL, exportar DLL ferramentas de resolução de problemas e funções DLL. Este artigo termina com uma comparação de alto nível de dll para o Microsoft .NET Framework assemblagens. INTRODUÇÃOPara os sistemas operativos Microsoft Windows que estão listados na secção "Aplica-se a", muitas das funcionalidades do sistema operativo é fornecida por bibliotecas de ligação dinâmica (DLL). Além disso, quando executa um programa destes sistemas operativos Windows, muitas das funcionalidades do programa podem ser fornecida por dll. Por exemplo, alguns programas poderão conter muitos módulos diferentes e cada módulo do programa está contido e distribuído de dll. A utilização das DLLs ajuda-o a promover modularization do código, reutilização do código, utilização da memória eficiente e reduzida de espaço em disco. Por conseguinte, o sistema operativo e os programas carregam mais rapidamente, executado mais rapidamente e demorar menos espaço em disco no computador. Quando um programa utiliza uma DLL, um problema que é designado por dependência pode fazer com que o programa não para ser executado. Quando um programa utiliza uma DLL, é criada uma dependência. Se outro programa substitui e divide esta dependência, o programa original não é executada com êxito. Com a introdução do Microsoft .NET Framework, a maior parte dos problemas de dependência ter sido eliminado através da utilização de assemblagens. Mais InformaçãoO que é uma DLL?Uma DLL é uma biblioteca que contém o código e dados que podem ser utilizados por mais do que um programa ao mesmo tempo. Por exemplo, pela sistemas operativos Windows, a DLL de Comdlg32 efectua comuns funções relacionadas com caixa de diálogo. Por conseguinte, cada programa pode utilizar a funcionalidade que está contida nesta DLL para implementar uma caixa de diálogo Abrir. Isto ajuda a promover a reutilização do código e utilização eficaz da memória.Utilizando uma DLL, um programa pode ser modularized em componentes separados. Por exemplo, um programa de gestão de contas pode ser vendido por módulo. Cada módulo pode ser carregado num programa principal em tempo de execução de se esse módulo estiver instalado. Uma vez que os módulos são separados, o tempo de carregamento do programa é mais rápido e um módulo só é carregado quando essa funcionalidade é pedida. Além disso, as actualizações são mais fáceis de aplicar cada módulo sem afectar outras partes do programa. Por exemplo, poderá ter um programa de folha de vencimentos, e as taxas de imposto sobre alterar cada ano. Quando estas alterações estão isoladas para uma DLL, pode aplicar uma actualização sem necessitar de criar ou instalar novamente o programa completo. A lista seguinte descreve alguns dos ficheiros que são implementados como DLLs em sistemas operativos Windows:
Vantagens DLLA lista seguinte descreve algumas das vantagens que são fornecidas quando um programa utiliza uma DLL:
Dependências DLLQuando um programa ou uma DLL utiliza uma função de DLL na DLL de outro, é criada uma dependência. Por conseguinte, o programa já não é autónomo e o programa poderá ter problemas se a dependência é interrompida. Por exemplo, o programa poderá não ser executado se ocorrer uma das seguintes acções:
A lista seguinte descreve as alterações que foram introduzidas no Microsoft Windows 2000 e no posteriores sistemas operativos do Windows para ajudar a minimizar os problemas de dependência:
Ferramentas de resolução de problemas de DLLVárias ferramentas estão disponíveis para ajudar a resolver problemas DLL. As seguintes ferramentas estão algumas destas ferramentas.Dependência WalkerA ferramenta Dependency Walker pode recursivamente digitalização para todas as DLLs dependentes são utilizados por um programa. Quando abrir um programa no Dependency Walker, Dependency Walker efectua as seguintes verificações:
drive\Programas\Microsoft visual Studio\Common\Tools DLL universal problema SolverA ferramenta de DLL universal problema Solver (DUPS) é utilizada para auditar, comparar, documento e apresentar informações de DLL. A lista seguinte descreve os utilitários que constituem a ferramenta DUPS:
247957
(http://support.microsoft.com/kb/247957/
)
Utilizando DUPS.exe para resolver problemas de compatibilidade DLL DLL de ajuda da base de dadosA base de dados DLL ajuda ajuda-o a localizar versões específicas de DLLs que são instaladas por produtos de software da Microsoft. Para mais informações sobre a base de dados DLL ajuda, visite o seguinte Web site da Microsoft:http://support.microsoft.com/dllhelp/
(http://support.microsoft.com/dllhelp/)
Desenvolvimento de DLLEsta secção descreve os problemas e os requisitos que deve considerar quando desenvolver as suas próprias dll.Tipos de DLLsQuando carregar uma DLL num aplicativo, dois métodos de ligação permitem-lhe chamar as funções DLL exportadas. Os dois métodos de ligação são tempo de carregamento dinâmico ligar e tempo de execução dinâmico ligar.Tempo de carregamento dinâmico ligarNo tempo de carregamento dinâmico ligar, uma aplicação efectua chamadas explícitas para funções DLL exportadas como funções locais. Para utilizar o tempo de carregamento dinâmico ligar, fornecer um ficheiro de cabeçalho (.h) e um ficheiro de importação de biblioteca (.lib) quando compilar e ligar a aplicação. Quando fizer isto, o linker irá fornecer o sistema com as informações que é necessárias para carregar a DLL e resolver as localizações de função DLL exportadas ao tempo de carregamento.Tempo de execução dinâmico ligarNo tempo de execução dinâmico ligar, uma aplicação chama a função de LoadLibrary ou a função LoadLibraryEx para carregar a DLL em tempo de execução. Depois da DLL é carregada com êxito, utilize a função de GetProcAddress para obter o endereço da função DLL exportado que pretende chamar. Quando utiliza o tempo de execução dinâmico ligar, não é necessário um ficheiro de biblioteca de importação.A lista seguinte descreve os critérios de aplicação para quando para utilizar tempo de carregamento dinâmico ligar e quando utilizar o tempo de execução dinâmico ligar:
O ponto de entrada da DLLQuando cria uma DLL, opcionalmente, pode especificar uma função de ponto de entrada. A função de ponto de entrada é chamada quando processos ou threads anexar próprios a DLL ou desligado próprios da DLL. Pode utilizar a função de ponto de entrada para inicializar estruturas de dados ou para destruir estruturas de dados conforme requerido pela DLL. Além disso, se a aplicação for multithread, pode utilizar o armazenamento local do thread (TLS) ao atribuir memória é privada para cada thread a função de ponto de entrada. O código seguinte é um exemplo de função de ponto de entrada DLL.A função de ponto de entrada apenas deve efectuar tarefas de inicialização simples e não deve chamar qualquer DLL carregar ou funções de terminação. Por exemplo, na função de ponto de entrada, deve não directa ou indirectamente chamar a função LoadLibrary ou a função LoadLibraryEx. Além disso, não deverá chamar a função de FreeLibrary quando o processo está a terminar. Nota Aplicações multithread, certifique-se que o acesso para a DLL é sincronizada dados globais (prova de thread) para evitar danos nos dados possíveis. Para efectuar este procedimento, utilize TLS para fornecer dados exclusivos para cada thread. Funções DLL a exportarPara exportar DLL funções, pode adicionar uma palavra-chave de função para as funções DLL exportadas ou criar um ficheiro de definição (.def) do módulo que lista as funções DLL exportadas.Para utilizar uma palavra-chave de função, tem de declarar cada função que pretende exportar com a palavra-chave seguinte: __declspec(dllexport) Para utilizar funções DLL exportadas na aplicação, tem de declarar cada função que pretende importar com a palavra-chave seguinte:__declspec(DllImport) Normalmente, utilizaria um ficheiro de cabeçalho que possui uma instrução de Definir e uma instrução de ifdef para separar a declaração de exportação e a declaração de importação.Também pode utilizar um ficheiro de definição do módulo para declarar funções exportadas da DLL. Quando utiliza um ficheiro de definição do módulo, não é necessário adicionar a palavra-chave de função para as funções DLL exportadas. No ficheiro de definição do módulo, declarar a instrução de biblioteca e a instrução EXPORTA para a DLL. O código seguinte é um exemplo de um ficheiro de definição. DLL de exemplo e aplicaçãoNo Microsoft Visual C++ 6.0, pode criar uma DLL, seleccionando o tipo de projecto Win32 Dynamic-Link Library ou o tipo de projecto MFC AppWizard (dll).O código seguinte é um exemplo de uma DLL que foi criada no Visual C++ utilizando o tipo de projecto Win32 Dynamic-Link Library. No tempo de execução dinâmico ligar, utilizar código semelhante ao seguinte código para chamar o SampleDLL.dll exportados função de DLL.
Assemblagem da .NET FrameworkCom a introdução do Microsoft .NET e o .NET Framework, a maior parte dos problemas que estão associados com DLLs ter sido eliminado através da utilização de assemblagens. Uma assemblagem é uma unidade lógica de funcionalidade que é executado sob o controlo do .NET common language runtime (CLR). Uma assemblagem existe fisicamente como um ficheiro .dll ou como um ficheiro .exe. No entanto, internamente uma assemblagem é muito diferente de uma DLL de Win32 da Microsoft.Um ficheiro de assemblagem contém um manifesto de assemblagem, metadados de tipo, código de idioma intermédio (MSIL) do Microsoft e outros recursos. O manifesto de assemblagem contém os metadados da assemblagem que fornece todas as informações que é necessárias para uma assemblagem para ser self-describing. As seguintes informações estão incluídas no manifesto da assemblagem:
A lista seguinte descreve algumas das funcionalidades de assemblagens comparado comparadas as funcionalidades das DLLs de Win32:
ReferênciasPara obter mais informações sobre DLLs e o .NET Framework assemblagens, visite os seguintes Web sites da Microsoft: Conflitos DLL http://msdn2.microsoft.com/en-us/library/ms811694.aspx (http://msdn2.microsoft.com/en-us/library/ms811694.aspx) Implementar componente side-by-side partilha nas aplicações http://msdn2.microsoft.com/en-us/library/ms811700.aspx (http://msdn2.microsoft.com/en-us/library/ms811700.aspx) Como criar e serviço isolado aplicações e assemblagens 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) Simplificar a implementação e resolução de conflitos 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 programador do .NET Framework: assemblagens http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx) Tempo de execução dinâmico ligar http://msdn2.microsoft.com/en-us/library/ms685090.aspx (http://msdn2.microsoft.com/en-us/library/ms685090.aspx) Thread de armazenamento local 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 de Artigos
|






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


Voltar ao topo