Compartilhar via


Tipos de DLLs

Este tópico fornece informações para ajudar você a determinar o tipo de DLL a ser compilado.

Diferentes tipos de DLLs disponíveis

Usando o Visual Studio, você pode criar DLLs do Win32 no C ou C++ que não usam a biblioteca MFC (Microsoft Foundation Classes). Você pode criar um projeto de DLL que não seja do MFC com o Assistente de Aplicativo do Win32.

A própria biblioteca MFC está disponível em bibliotecas de vínculo estático ou em várias DLLs, com o Assistente de DLL do MFC. Se a DLL estiver usando o MFC, o Visual Studio oferecerá suporte a três cenários de desenvolvimento de DLL diferentes:

  • Criação de uma DLL regular do MFC que vincula estaticamente o MFC

  • Criação de uma DLL regular do MFC que vincula dinamicamente o MFC

  • Criação de uma DLL de extensão do MFC, que sempre vincula dinamicamente o MFC

Que mais você deseja saber?

Decidir qual tipo de DLL usar

Se a DLL não usar o MFC, use o Visual Studio para criar uma DLL Win32 que não seja do MFC. Vincular sua DLL ao MFC (estática ou dinamicamente) ocupa espaço significativo em disco e memória. Você não deve vincular ao MFC, a menos que sua DLL realmente use o MFC.

Se a DLL usar o MFC e for usada por aplicativos que sejam ou não do MFC, você deverá criar uma DLL do MFC regular que seja vinculada dinamicamente ao MFC ou uma DLL do MFC regular que se vincule estaticamente ao MFC. Na maioria dos casos, é provável que você use uma DLL do MFC regular que seja vinculada dinamicamente ao MFC porque o tamanho do arquivo da DLL será muito menor e a economia em memória ao usar a versão compartilhada do MFC poderá ser significativa. Se você vincular estaticamente ao MFC, o tamanho do arquivo da sua DLL será maior e potencialmente ocupará memória extra porque ela carregará sua própria cópia privada do código da biblioteca do MFC.

A criação de uma DLL que se vincula dinamicamente ao MFC é mais rápida do que criar uma DLL que se vincule estaticamente ao MFC porque não é necessário vincular o MFC. Isso é especialmente verdadeiro em builds de depuração em que o vinculador deve compactar as informações de depuração. Ao vincular com uma DLL que já contém as informações de depuração, haverá menos informações de depuração para compactar em sua DLL.

Uma desvantagem de vincular dinamicamente ao MFC é que você deverá distribuir as DLLs compartilhadas Mfcx0.dll e Msvcrxx.dll (ou arquivos semelhantes) com sua DLL. As DLLs do MFC podem ser redistribuídas livremente, mas você ainda deverá instalar as DLLs em seu programa de instalação. Além disso, você deve enviar o Msvcrxx.dll, que contém a biblioteca de runtime do C que é usada pelo programa e pelas próprias DLLs do MFC.

Se a DLL for usada apenas por executáveis do MFC, você terá a opção de criar uma DLL do MFC regular ou uma DLL de extensão do MFC. Se a DLL implementar classes reutilizáveis derivadas das classes do MFC existentes ou se você precisar passar objetos derivados da MFC entre o aplicativo e a DLL, você deverá criar uma DLL de extensão do MFC.

Se a DLL for vinculada dinamicamente ao MFC, as DLLs do MFC poderão 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.

Que mais você deseja saber?

Confira também

Criar DLLs C /C++ no Visual Studio