DLLs regulares estaticamente vinculadas ao MFC

Uma DLL regular estaticamente vinculada ao MFC é uma DLL que usa internamente o MFC e as funções exportadas na DLL podem ser chamadas por arquivos executáveis do MFC ou não MFC.sistema autônomo o nome descreve, esse tipo de DLL é construído usando-se a versão de biblioteca de vínculo estático do MFC.Funções geralmente são exportadas de uma DLL regular usando a interface C padrão.Para obter um exemplo de como escrever, compilação e usar uma DLL regular, consulte o exemplo DLLScreenCap.

Observe que o termo USRDLL não é mais usado na documentação do Visual C++.Uma DLL regular que está estaticamente vinculada ao MFC tem sistema autônomo mesmas características sistema autônomo USRDLL anterior.

Uma DLL regular, estaticamente vinculada ao MFC, tem os seguintes recursos:

  • O cliente executável pode ser escrito em qualquer linguagem que suporta o uso de DLLs (C, C++, Pascal, Visual Basic e assim por diante); não é necessário ser um aplicativo MFC.

  • A DLL pode vincular as bibliotecas de vínculo estático MFC mesmas usadas pelos aplicativos.Não é uma versão separada das bibliotecas de vínculo estático para DLLs.

  • Antes da versão 4.0 do MFC, USRDLLs fornecido no mesmo tipo de funcionalidade sistema autônomo regulares DLLs vinculadas estaticamente a MFC.sistema autônomo do Visual C++ versão 4.0, o termo USRDLL é obsoleto.

Uma DLL regular, estaticamente vinculada ao MFC, tem os seguintes requisitos:

  • Esse tipo de DLL deve instanciar uma classe derivada de CWinApp.

  • Esse tipo de DLL usa o DllMain fornecido pelo MFC. Colocar código de inicialização DLL específicos todos sistema autônomo o InitInstance código de função e a terminação membro no ExitInstance sistema autônomo em um aplicativo MFC normal.

  • Embora o termo USRDLL é obsoleto, você ainda deve definir"_USRDLL "na linha de comando da compilador.Essa definição determina quais declarações retirados dos arquivos de cabeçalho do MFC.

DLLs regulares devem ter um CWinApp-derivado de classe e um único objeto dessa classe de aplicativo, sistema autônomo um aplicativo MFC. No entanto, a CWinApp objeto da DLL não tem uma bomba de mensagem principal, sistema autônomo faz a CWinApp objeto de um aplicativo.

Observe que o CWinApp::Run mecanismo não se aplica a uma DLL, porque o aplicativo que detém a bomba de mensagem principal. Se a DLL abre caixas de diálogo sem janela restrita ou possui uma quadro principal sua própria janela, bomba de mensagem principal do aplicativo deve chamar uma rotina exportada pela DLL que por sua vez, chamadas a CWinApp::PreTranslateMessage função de membro de objeto de aplicativo da DLL.

Para obter um exemplo dessa função, consulte o exemplo DLLScreenCap.

Símbolos geralmente são exportados de uma DLL regular usando a interface C padrão.A declaração de uma função exportada de uma DLL normal poderia ter esta aparência:

extern "C" __declspec(dllexport) MyExportedFunction( );

Todas as alocações de memória dentro de uma DLL regular devem permanecer dentro de DLL; DLL não deve passar para ou receber do executável chamado qualquer um dos seguintes:

  • Ponteiros para objetos do MFC

  • Ponteiros para memória alocada pelo MFC

Se você precisar fazer qualquer uma das opções acima ou precisar passar objetos derivados de MFC entre o executável de chamada e a DLL, você deve criar uma DLL de extensão.

É seguro passar ponteiros de memória que foram alocados pelas bibliotecas de time de execução C entre um aplicativo e uma DLL somente se você fazer uma cópia dos dados.Você não deve excluir ou redimensionar esses ponteiros ou usá-los sem fazer uma cópia da memória.

Uma DLL que está estaticamente vinculada ao MFC também dinamicamente não é possível vincular às DLLs compartilhadas MFC.Uma DLL que está estaticamente vinculada ao MFC dinamicamente vinculada a um aplicativo assim como qualquer Outros DLL; aplicativos vinculá-lo como qualquer Outros DLL.

As bibliotecas de vínculo estático MFC padrões são nomeadas de acordo com a convenção descrita em Convenções de nomenclatura para DLLs do MFC.No entanto, com MFC versão 3.0 e posterior, não é necessário especificar manualmente para o vinculador a versão da biblioteca MFC que deseja vincular na.Em vez disso, define o cabeçalho do MFC arquivos determinar automaticamente a versão correta da biblioteca MFC para vincular em baseada na pré-processador, sistema autônomo _DEBUG or _UNICODE.Os arquivos de cabeçalho MFC adicione /DEFAULTLIB diretivas instruindo o vinculador vincular em uma versão específica da biblioteca MFC.

O que você deseja fazer?

O que você deseja saber mais sobre?

Consulte também

Conceitos

Tipos de DLLs