Compartilhar via


Tipos de DLLs

Este tópico fornece informações para ajudá-lo a determinar o tipo de DLL para construir.

Diferentes tipos de DLLs disponíveis

Usando o Visual C++, você pode criar DLLs Win32 em c ou C++ que não usam a biblioteca Microsoft Foundation Class (MFC). Você pode criar um projeto de DLL não - MFC com o Assistente de aplicativos do Win32.

A própria biblioteca MFC está disponível, em qualquer bibliotecas de vínculo estático ou um número de DLLs, com o Assistente de DLL da MFC. Se sua DLL usando o MFC, o Visual C++ oferece suporte a três cenários diferentes de desenvolvimento de DLL:

  • Criar uma DLL regular que estaticamente vincula MFC

  • Criar uma DLL regular que dinamicamente links MFC

  • Criando uma DLL de extensão do MFC, que sempre ligar dinamicamente MFC

O que você deseja saber mais a respeito?

Decidir o tipo de DLL para uso

Se sua DLL não use MFC, use o Visual C++ para criar uma não - MFC DLL Win32. Vinculando sua DLL MFC (estaticamente ou dinamicamente) ocupa muito espaço em disco e de memória. Você não deve vincular a MFC, a menos que sua DLL realmente usa MFC.

Se sua DLL estará usando o MFC e será usado pelos aplicativos MFC ou de não-MFC, você deve construir em uma DLL de regular dinamicamente vincula ao MFC ou uma DLL regular que se vincula estaticamente ao MFC. Na maioria dos casos, você provavelmente deseja usar uma DLL regular que vincula dinamicamente ao MFC, porque o tamanho do arquivo da DLL será muito menor e a economia de memória usando a versão compartilhada do MFC pode ser significativa. Se você vincular estaticamente para o MFC, o tamanho do arquivo de sua DLL será maior e potencialmente ocupar memória extra porque ele carrega sua própria cópia do código de biblioteca MFC.

A criação de uma DLL que dinamicamente se vincula ao MFC é mais rápido do que a criação de uma DLL que se vincula estaticamente ao MFC porque não é necessário vincular MFC propriamente dito. Isso é especialmente verdadeiro em compilações de depuração, onde o vinculador deve compactar as informações de depuração. Vinculando-se com uma DLL que já contém as informações de depuração, há menos informações de depuração para compactar dentro da sua DLL.

Vinculando dinamicamente a MFC uma desvantagem é que você deve distribuir o Mfcx0.dll de DLLs compartilhadas e Msvcrxx.dll (ou arquivos similares) com sua DLL. As DLLs do MFC são redistribuíveis gratuitamente, mas ainda terá que instalar as DLLs em seu programa de instalação. Além disso, é necessário enviar Msvcrxx.dll, que contém a biblioteca de tempo de execução c é usada tanto pelo seu programa e as DLLs de MFC propriamente ditos.

Se a sua DLL só será usado por arquivos executáveis do MFC, você pode escolher entre a criação de uma DLL regular ou uma DLL de extensão. Se sua DLL implementa reutilizáveis classes derivadas de classes MFC existentes ou você precisa passar objetos derivados de MFC entre o aplicativo e a DLL, você deve construir uma DLL de extensão.

Se sua DLL dinamicamente a MFC, as DLLs do MFC pode ser redistribuídas com sua DLL. Essa arquitetura é particularmente útil para compartilhar a biblioteca de classes entre vários arquivos executáveis para economizar espaço em disco e minimizar o uso de memória.

Anteriores à versão 4.0, Visual C++ somente com suporte a dois tipos de DLLs usadas MFC: USRDLLs e AFXDLLs. DLLs normais do MFC vinculadas estaticamente têm as mesmas características como o antigo USRDLL. DLLs de extensão do MFC têm as mesmas características como os antigos AFXDLLs.

O que você deseja saber mais a respeito?

Consulte também

Conceitos

DLLs