Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La bibliothèque MFC est disponible dans les versions qui prennent en charge le code ANSI à octet unique et multioctet (MBCS), ainsi que les versions qui prennent en charge Unicode (encodé en UTF-16LE, jeu de caractères natif Windows). Chaque version de MFC est disponible en tant que bibliothèque statique ou en tant que DLL partagée. Il existe également une version de bibliothèque statique MFC plus petite qui laisse les contrôles MFC pour les boîtes de dialogue, pour les applications très sensibles à la taille et qui n’ont pas besoin de ces contrôles. Les bibliothèques MFC sont disponibles dans les versions de débogage et de mise en production pour les architectures prises en charge qui incluent des processeurs x86, x64 et ARM. Vous pouvez créer des applications (.exe fichiers) et des DLL avec n’importe quelle version des bibliothèques MFC. Il existe également un ensemble de bibliothèques MFC compilées pour l’interopérabilité avec du code managé. Les DLL partagées MFC incluent un numéro de version pour indiquer la compatibilité binaire de la bibliothèque.
Liaison automatique des versions de bibliothèque MFC
Les fichiers d’en-tête MFC déterminent automatiquement la version correcte de la bibliothèque MFC à lier, en fonction des valeurs définies dans votre environnement de génération. Les fichiers d’en-tête MFC ajoutent des directives du compilateur demandant à l’éditeur de liens de lier dans une version spécifique de la bibliothèque MFC.
Par exemple, L’AFX. Le fichier d’en-tête H indique à l’éditeur de liens de lier dans la version statique, statique limitée ou partagée complète de MFC ; VERSION ANSI/MBCS ou Unicode ; et déboguer ou version commerciale, en fonction de votre configuration 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
Les fichiers d’en-tête MFC incluent également des directives pour lier toutes les bibliothèques requises, notamment les bibliothèques MFC, les bibliothèques Win32, les bibliothèques OLE, les bibliothèques OLE générées à partir d’exemples, de bibliothèques ODBC, et ainsi de suite.
ANSI, MBCS et Unicode
Les versions de la bibliothèque ANSI/MBCS MFC prennent en charge les jeux de caractères à octet unique tels que ASCII et les jeux de caractères multioctets tels que Shift-JIS. Les versions de la bibliothèque Unicode MFC prennent en charge Unicode dans son formulaire encodé en caractères larges UTF-16LE. Utilisez les versions de la bibliothèque ANSI/MBCS de MFC pour la prise en charge Unicode encodée en UTF-8.
Pour définir la configuration de votre projet pour utiliser une chaîne Unicode à octet unique, multioctet ou une chaîne Unicode à caractères larges dans l’IDE, utilisez la boîte de dialogue Propriétés du projet . Dans la page Général des propriétés> de configuration, définissez la propriété Jeu de caractères sur Not Set pour utiliser un jeu de caractères sur un octet. Définissez la propriété sur Utiliser le jeu de caractères multioctets pour utiliser un jeu de caractères multioctets ou pour utiliser le jeu de caractères Unicode pour utiliser l’encodage Unicode en UTF-16.
Les projets MFC utilisent le symbole de préprocesseur _UNICODE pour indiquer la prise en charge Unicode de caractères larges UTF-16 et _MBCS pour indiquer la prise en charge de MBCS. Ces options s’excluent mutuellement dans un projet.
Conventions d’affectation de noms de bibliothèque statique MFC
Les bibliothèques statiques pour MFC utilisent les conventions d’affectation de noms suivantes. Les noms de bibliothèque ont le formulaire
uAFXcd. LIB
où les lettres affichées en minuscules italiques sont des espaces réservés pour les spécificateurs dont les significations sont affichées dans le tableau suivant :
Spécificateur | Valeurs et significations |
---|---|
u | ANSI/MBCS (N) ou Unicode (U) ; omettre pour la version sans contrôles MFC dans les boîtes de dialogue |
c | Version avec des contrôles MFC dans des dialogues (CW) ou sans (NMCD) |
d | Déboguer ou libérer : D=Déboguer ; spécificateur omit pour la version |
Toutes les bibliothèques répertoriées dans le tableau suivant sont incluses prédéfinis dans le répertoire \atlmfc\lib pour les architectures de build prises en charge.
Bibliothèque | Descriptif |
---|---|
NAFXCW. LIB | Bibliothèque Static-Link MFC, version release |
WDXCWD. LIB | Bibliothèque Static-Link MFC, version de débogage |
UAFXCW. LIB | Bibliothèque de Static-Link MFC avec prise en charge Unicode, version release |
UAFXCWD. LIB | Bibliothèque de Static-Link MFC avec prise en charge Unicode, version de débogage |
AFXNMCD. LIB | Bibliothèque Static-Link MFC sans contrôles de boîte de dialogue MFC, version release |
AFXNMCDD. LIB | Bibliothèque Static-Link MFC sans contrôles de boîte de dialogue MFC, version de débogage |
Les fichiers débogueur qui ont le même nom de base et une extension .pdb sont également disponibles pour chacune des bibliothèques statiques.
Conventions d’affectation de noms de DLL partagées MFC
Les DLL partagées MFC suivent également une convention de nommage structurée. Cela facilite la connaissance de la DLL ou de la bibliothèque que vous devez utiliser à cet effet.
Les DLL MFC ont des numéros de version qui indiquent la compatibilité binaire. Utilisez des DLL MFC qui ont la même version que vos autres bibliothèques et ensemble d’outils de compilateur pour garantir la compatibilité au sein d’un projet.
DLL | Descriptif |
---|---|
Version MFC.DLL | DLL MFC, VERSION ANSI ou MBCS Release |
VersionMFC U.DLL | DLL MFC, version de publication Unicode |
D.DLL de versionMFC | DLL MFC, VERSION DE DÉBOGAGE ANSI ou MBCS |
VersionMFC UD.DLL | DLL MFC, version de débogage Unicode |
Version de MFCM.DLL | DLL MFC avec des contrôles Windows Forms, une version ANSI ou MBCS Release |
Version deMFCM U.DLL | DLL MFC avec des contrôles Windows Forms, version de version de version Unicode |
Version deMFCM D.DLL | DLL MFC avec des contrôles Windows Forms, une version de débogage ANSI ou MBCS |
Version deMFCM UD.DLL | DLL MFC avec contrôles Windows Forms, version de débogage Unicode |
Les bibliothèques d’importation nécessaires pour générer des applications ou des DLL d’extension MFC qui utilisent ces DLL partagées ont le même nom de base que la DLL, mais qui ont une extension de nom de fichier .lib. Lorsque vous utilisez les DLL partagées, une petite bibliothèque statique doit toujours être liée à votre code ; cette bibliothèque est nomméeMFCS version{U}{D}.lib.
Si vous établissez une liaison dynamique à la version DE DLL partagée de MFC, qu’il s’agisse d’une application ou d’une DLL d’extension MFC, vous devez inclure laversion MFC correspondante.DLL ou laversionMFC U.DLL lorsque vous déployez votre produit.
Pour obtenir la liste des DLL Visual C++ qui peuvent être distribuées avec vos applications, consultez Le code distribuable pour Microsoft Visual Studio 2017 et le SDK Microsoft Visual Studio 2017 (inclut les utilitaires et les fichiers BuildServer) ou le code distribuable pour Visual Studio 2019.
Pour plus d’informations sur la prise en charge de MBCS et Unicode dans MFC, consultez prise en charge du jeu de caractères Unicode et multioctet (MBCS).
Prise en charge de la bibliothèque de liens dynamiques
Vous pouvez utiliser les bibliothèques MFC statiques ou partagées pour créer des DLL qui peuvent être utilisées par les exécutables MFC et non-MFC. Ils sont appelés « DLL régulières » ou « DLL MFC standard », pour les distinguer des DLL d’extension MFC qui ne peuvent être utilisées que par les applications MFC et les DLL MFC. Une DLL générée à l’aide des bibliothèques statiques MFC est parfois appelée USRDLL dans les références antérieures, car les projets DLL MFC définissent le symbole de préprocesseur _USRDLL. Une DLL qui utilise les DLL partagées MFC est parfois appelée AFXDLL dans les références antérieures, car elle définit le symbole de préprocesseur _AFXDLL.
Lorsque vous créez votre projet DLL en liant les bibliothèques statiques MFC, votre DLL peut être déployée sans les DLL partagées MFC. Lorsque votre projet DLL est lié à laversion MFC des bibliothèques d’importation. LIB ou versionMFCU.LIB, vous devez déployer laversion MFC de DLL partagée MFC correspondante.DLL ou laversionMFC U.DLL avec votre DLL. Pour plus d’informations, consultez DLL.