Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A Biblioteca MFC está disponível em versões que suportam código ANSI de byte único e conjunto de caracteres multibyte (MBCS), bem como versões que suportam 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 menor da biblioteca estática MFC que deixa de fora os 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 lançamento para arquiteturas suportadas 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 interface 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 a ser vinculada, com base nos valores definidos em seu ambiente de compilação. Os arquivos de cabeçalho MFC adicionam diretivas de compilador instruindo o vinculador a vincular em uma versão específica da biblioteca MFC.
Por exemplo, o arquivo de cabeçalho AFX.H instrui o linker a vincular a versão DLL estática completa, estática limitada ou compartilhada do MFC; versão ANSI/MBCS ou Unicode; e a versão de depuração ou final, dependendo da sua 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 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 suportam conjuntos de caracteres de byte único, como ASCII, e conjuntos de caracteres multibyte, como Shift-JIS. As versões da biblioteca MFC Unicode suportam Unicode em sua forma codificada de caracteres largos UTF-16LE. Utilize as versões da biblioteca ANSI/MBCS do MFC para suporte Unicode em codificação UTF-8.
Para definir a configuração do seu projeto para usar cadeia de caracteres ou suporte a caracteres Unicode de byte único, multibyte ou de largura no IDE, utilize a caixa de diálogo Propriedades do Projeto. Na páginaGeral das > de Configuração, defina a propriedade Conjunto de Caracteres como Não Definido para usar um conjunto de caracteres de byte único. Defina a propriedade para Usar conjunto de caracteres de vários bytes para usar um conjunto de caracteres de vários bytes ou para Usar conjunto de caracteres Unicode para usar Unicode codificado como UTF-16.
Os projetos MFC usam o símbolo do pré-processador _UNICODE para indicar suporte a caracteres largos Unicode UTF-16, e _MBCS para indicar suporte a MBCS. Estas opções excluem-se mutuamente num projeto.
Convenções de nomenclatura de bibliotecas estáticas MFC
As bibliotecas estáticas para MFC usam as seguintes convenções de nomenclatura. Os nomes das bibliotecas têm a forma
uAFXcd. LIB
onde as letras mostradas em itálico minúsculo 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); omitir para 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 | Depurar ou Liberar: D=Depurar; omitir especificador para Release |
Todas as bibliotecas listadas na tabela a seguir estão incluídas pré-construídas no diretório \atlmfc\lib para arquiteturas de compilação suportadas.
| Biblioteca | Descrição |
|---|---|
| NAFXCW. LIB | Biblioteca MFC Static-Link, versão de lançamento |
| NAFXCWD. LIB | MFC Static-Link Library, Versão de Depuração |
| UAFXCW. LIB | Biblioteca Static-Link MFC, versão de lançamento, com suporte a Unicode |
| UAFXCWD. LIB | Biblioteca Static-Link MFC com suporte a Unicode, versão de debug |
| AFXNMCD. LIB | Biblioteca MFC Static-Link sem controlos de diálogo MFC, Versão Release |
| AFXNMCDD. LIB | Biblioteca MFC Static-Link sem controlos de diálogo MFC, versão de depuração |
Os arquivos do 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 MFC
As DLLs compartilhadas do MFC também seguem uma convenção de nomenclatura estruturada. Isso torna mais fácil saber qual DLL ou biblioteca você deve usar para qual finalidade.
As DLLs 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 dentro de um projeto.
| DLL | Descrição |
|---|---|
| MFCversão.DLL | MFC DLL, ANSI ou MBCS Versão de lançamento |
| MFCversãoU.DLL | MFC DLL, versão Release Unicode |
| MFCversão D.DLL | Versão de depuração MFC DLL, ANSI ou MBCS |
| MFCVersão UD.DLL | MFC DLL, versão de depuração Unicode |
| VersãoMFCM.DLL | DLL MFC com controles do Windows Forms, versão de lançamento ANSI ou MBCS |
| VersãoMFCM U.DLL | DLL MFC com controles do Windows Forms, versão de lançamento Unicode |
| MFCMversãoD.DLL | DLL MFC com controles do Windows Forms, versão de depuração ANSI ou MBCS |
| MFCMVersãoUD.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 ser vinculada ao seu código; esta biblioteca é denominada MFCSversion{U}{D}.lib.
Se estiver a vincular dinamicamente à versão DLL partilhada do MFC, seja de uma aplicação ou de uma DLL de extensão MFC, deverá incluir a MFCversão.DLL correspondente ou a MFCversãoU.DLL ao implantar o seu produto.
Para obter uma lista de DLLs do Visual C++ que podem ser distribuídas com seus aplicativos, consulte Código distribuível para Microsoft Visual Studio 2017 e 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 o suporte a MBCS e Unicode no MFC, consulte Suporte a Unicode e MBCS (Multibyte Character set).
Suporte a bibliotecas 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. Estas 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 MFC às vezes é chamada de USRDLL em referências mais antigas, porque os projetos MFC DLL definem o símbolo do pré-processador _USRDLL. Uma DLL que usa as DLLs compartilhadas MFC às vezes é chamada de AFXDLL em referências mais antigas, porque define o símbolo do pré-processador _AFXDLL.
Quando você cria seu projeto DLL vinculando-se às bibliotecas estáticas MFC, sua DLL pode ser implantada sem as DLLs compartilhadas MFC. Quando o seu projeto DLL se vincula às bibliotecas de importação MFCversão.LIB ou MFCversãoU.LIB, deve implantar a DLL partilhada correspondente MFCversão.DLL ou MFCversãoU.DLL juntamente com a sua DLL. Para obter mais informações, consulte DLLs.