Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Biblioteca MFC está disponível em versões que dão suporte a código MBCS (conjunto de caracteres de byte único e multibyte) ANSI, bem como versões que dão suporte ao Unicode (codificado como UTF-16LE, o conjunto de caracteres nativo do Windows). Cada versão do MFC está disponível como uma biblioteca estática ou como uma DLL compartilhada. Há também uma versão de biblioteca estática MFC menor que deixa de fora controles MFC para caixas de diálogo, para aplicativos que são muito sensíveis ao tamanho e não precisam desses controles. As bibliotecas MFC estão disponíveis nas versões de depuração e versão para arquiteturas com suporte que incluem processadores x86, x64 e ARM. Você pode criar aplicativos ( arquivos.exe) e DLLs com qualquer versão das bibliotecas MFC. Há também um conjunto de bibliotecas MFC compiladas para interfiguração com código gerenciado. As DLLs compartilhadas do MFC incluem um número de versão para indicar a compatibilidade binária da biblioteca.
Vinculação automática de versões da biblioteca MFC
Os arquivos de cabeçalho MFC determinam automaticamente a versão correta da biblioteca MFC para vincular, com base nos valores definidos em seu ambiente de build. Os arquivos de cabeçalho MFC adicionam diretivas do compilador instruindo o vinculador a vincular em uma versão específica da biblioteca MFC.
Por exemplo, o AFX. O arquivo de cabeçalho H instrui o vinculador a vincular na versão de DLL estática, limitada ou compartilhada completa do MFC; ANSI/MBCS ou versão Unicode; e depuração ou versão de varejo, dependendo da configuração de build:
#ifndef _AFXDLL
#ifdef _AFX_NO_MFC_CONTROLS_IN_DIALOGS
#ifdef _DEBUG
#pragma comment(lib, "afxnmcdd.lib")
#else
#pragma comment(lib, "afxnmcd.lib")
#endif
#pragma comment(linker, "/include:__afxNoMFCControlSupportInDialogs")
#pragma comment(linker, "/include:__afxNoMFCControlContainerInDialogs")
#endif
#ifndef _UNICODE
#ifdef _DEBUG
#pragma comment(lib, "nafxcwd.lib")
#else
#pragma comment(lib, "nafxcw.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "uafxcwd.lib")
#else
#pragma comment(lib, "uafxcw.lib")
#endif
#endif
#else
#ifndef _UNICODE
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "d.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "d.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER ".lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER ".lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "ud.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "ud.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "u.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "u.lib")
#endif
#endif
#endif
Os arquivos de cabeçalho MFC também incluem diretivas para vincular em todas as bibliotecas necessárias, incluindo bibliotecas MFC, bibliotecas Win32, bibliotecas OLE, bibliotecas OLE criadas a partir de exemplos, bibliotecas ODBC e assim por diante.
ANSI, MBCS e Unicode
As versões da biblioteca MFC ANSI/MBCS dão suporte a conjuntos de caracteres de byte único, como ASCII, e conjuntos de caracteres multibyte, como Shift-JIS. As versões da biblioteca Unicode do MFC dão suporte ao Unicode em seu formulário codificado em caractere largo UTF-16LE. Use as versões da biblioteca ANSI/MBCS do MFC para suporte unicode codificado em UTF-8.
Para definir a configuração do projeto para usar a cadeia de caracteres Unicode de byte único, multibyte ou de caractere largo e suporte a caracteres no IDE, use a caixa de diálogo Propriedades do Projeto . Na páginaGeraldas Propriedades> de Configuração, defina a propriedade Conjunto de Caracteres como Não Definida para usar um conjunto de caracteres de byte único. Defina a propriedade para usar o conjunto de caracteres de vários bytes para usar um conjunto de caracteres multibyte ou usar o Conjunto de Caracteres Unicode para usar o Unicode codificado como UTF-16.
Os projetos MFC usam o símbolo de pré-processador _UNICODE para indicar o suporte unicode de caracteres largos UTF-16 e _MBCS para indicar o suporte ao MBCS. Essas opções são mutuamente exclusivas em um projeto.
Convenções de nomenclatura de biblioteca estática do MFC
As bibliotecas estáticas para MFC usam as convenções de nomenclatura a seguir. Os nomes da biblioteca têm o formulário
uCDAFX. LIB
em que as letras mostradas em minúsculas itálicas são espaços reservados para especificadores cujos significados são mostrados na tabela a seguir:
Especificador | Valores e significados |
---|---|
u | ANSI/MBCS (N) ou Unicode (U); omita a versão sem controles MFC em caixas de diálogo |
c | Versão com controles MFC em caixas de diálogo (CW) ou sem (NMCD) |
d | Depuração ou versão: D=Depurar; omitir especificador para Versão |
Todas as bibliotecas listadas na tabela a seguir são incluídas predefinidas no diretório \atlmfc\lib para arquiteturas de build com suporte.
Biblioteca | Descrição |
---|---|
NAFXCW. LIB | Biblioteca de Static-Link do MFC, versão de versão |
NAFXCWD. LIB | Biblioteca de Static-Link MFC, versão de depuração |
UAFXCW. LIB | Biblioteca de Static-Link do MFC com suporte unicode, versão de versão |
UAFXCWD. LIB | Biblioteca de Static-Link do MFC com suporte unicode, versão de depuração |
AFXNMCD. LIB | Biblioteca de Static-Link MFC sem controles de diálogo MFC, versão de versão |
AFXNMCDD. LIB | Biblioteca de Static-Link MFC sem controles de diálogo MFC, versão de depuração |
Arquivos de depurador que têm o mesmo nome base e uma extensão .pdb também estão disponíveis para cada uma das bibliotecas estáticas.
Convenções de nomenclatura de DLL compartilhadas do MFC
As DLLs compartilhadas do MFC também seguem uma convenção de nomenclatura estruturada. Isso facilita saber qual DLL ou biblioteca você deve usar para qual finalidade.
As DLLs do MFC têm números de versão que indicam compatibilidade binária. Use DLLs MFC que têm a mesma versão que suas outras bibliotecas e conjunto de ferramentas do compilador para garantir a compatibilidade em um projeto.
DLL | Descrição |
---|---|
Versão do MFC.DLL | Versão da versão MFC DLL, ANSI ou MBCS |
Versão doMFC U.DLL | Versão de versão do MFC DLL, Unicode |
Versão doMFC D.DLL | Versão de depuração de MFC DLL, ANSI ou MBCS |
Versão doMFC UD.DLL | Versão de depuração do MFC DLL, Unicode |
Versão do MFCM.DLL | DLL MFC com controles do Windows Forms, versão de versão ANSI ou MBCS |
Versão doMFCM U.DLL | DLL MFC com controles do Windows Forms, versão de versão Unicode |
Versão doMFCM D.DLL | DLL MFC com controles do Windows Forms, versão de depuração ansi ou MBCS |
Versão doMFCM UD.DLL | DLL MFC com controles do Windows Forms, versão de depuração unicode |
As bibliotecas de importação necessárias para criar aplicativos ou DLLs de extensão MFC que usam essas DLLs compartilhadas têm o mesmo nome base que a DLL, mas têm uma extensão de nome de arquivo .lib. Quando você usa as DLLs compartilhadas, uma pequena biblioteca estática ainda deve estar vinculada ao seu código; esta biblioteca se chamaversão do MFCS{U}{D}.lib.
Se você estiver vinculando dinamicamente à versão de DLL compartilhada do MFC, seja de um aplicativo ou de uma DLL de extensão MFC, deverá incluir aversão MFC correspondente.DLL oua versãodo MFC U.DLL ao implantar seu produto.
Para obter uma lista de DLLs do Visual C++ que podem ser distribuídas com seus aplicativos, consulte o Código Distribuível para o Microsoft Visual Studio 2017 e o SDK do Microsoft Visual Studio 2017 (inclui utilitários e arquivos BuildServer) ou código distribuível para Visual Studio 2019.
Para obter mais informações sobre suporte a MBCS e Unicode no MFC, consulte suporte a Unicode e MBCS (Conjunto de Caracteres Multibyte).
Suporte à biblioteca de vínculo dinâmico
Você pode usar as bibliotecas MFC dinâmicas estáticas ou compartilhadas para criar DLLs que podem ser usadas por executáveis MFC e não MFC. Elas são chamadas de "DLLs regulares" ou "DLLs MFC regulares", para distingui-las das DLLs de extensão MFC que só podem ser usadas por aplicativos MFC e DLLs MFC. Uma DLL criada usando as bibliotecas estáticas do MFC às vezes é chamada de USRDLL em referências mais antigas, pois projetos de DLL MFC definem o símbolo de pré-processador _USRDLL. Uma DLL que usa as DLLs compartilhadas do MFC às vezes é chamada de AFXDLL em referências mais antigas, pois define o símbolo do pré-processador _AFXDLL.
Quando você cria seu projeto de DLL vinculando-se às bibliotecas estáticas do MFC, sua DLL pode ser implantada sem as DLLs compartilhadas do MFC. Quando o projeto DLL é vinculado àversão MFC das bibliotecas de importação. LIB ou MFCversãoU.LIB, você deve implantar aversão MLL MFC compartilhada MFC correspondente.DLL ouversãoMFC U.DLL junto com sua DLL. Para obter mais informações, consulte DLLs.