web-dev-qa-db-fra.com

error Merci de #define _AFXDLL ou de ne pas utiliser/MD [d] se produit même après avoir modifié les propriétés du projet

Je travaille sur le projet Win32 dans Visual Studio 2011. Il génère une erreur MFC lorsque j'inclus afx.h ou afxwin.h. Pour résoudre ce problème, j'ai apporté les modifications suivantes dans l'onglet Propriétés du projet: 1) Utilisation de MFC: utilisez MFC dans un fichier partagé DLL 2) C++ -> Génération de code -> Bibliothèque d'exécution -> Multi-threaded Debug DLL (/ MDd)

Cela me donne quand même l'erreur suivante lorsque je construis la solution:

1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

Ma question est pourquoi le projet Win32 génère une erreur MFC et comment dois-je supprimer cette erreur. Guidez-moi bien.

34
SayaliK

Sur Visual Studio 2011, cela a fonctionné pour moi:

Project -> "project" Properties -> Configuration Properties -> C/C++ -> Advanced -> Show Includes:YES(/showIncludes) 

Project -> "project" Properties -> Configuration Properties -> General -> Project Defaults -> Use of MFC :Use MFC in a shared DLL

36

J'avais le même problème, mais je ne l'ai résolu que lorsque j'ai réalisé que je devais définir l'indicateur "Utiliser un MFC dans une DLL partagée" pour les configurations de débogage et de publication (je ne l'avais défini que pour le débogage).

12
Chris Kennedy

Selon mon expérience, il y a deux étapes. ... Supposons que vous vouliez une liaison STATIQUE: A) définir "Utiliser MFC dans une bibliothèque statique" B) ajouter: #define _AFXDLL 1in stdafx.h

travaille sur VS 2012

5
ingconti

Je me suis battu avec un problème similaire. Dans mon cas, cela était dû aux paramètres attachés à des fichiers cpp individuels. Dans la mesure où ils contenaient des symboles de préprocesseur, ils bloquaient en fait les paramètres de niveau de projet (ou d'accessoires) utilisant ces symboles.

Vérifiez donc si vous avez des paramètres de niveau de fichier dans votre vcxproj. Si tel est le cas, vérifiez si elles correspondent aux paramètres définis au niveau du projet. S'ils le sont, vous pouvez les supprimer en toute sécurité. S'il y a des différences, vous devez les résoudre.

Les paramètres de niveau de fichier Cpp doivent généralement être vides (il existe quelques exceptions lorsque vous en avez besoin), mais il est assez facile de les ajouter par accident.

1
Vojtěch Fried

J'obtenais cette erreur parce que je n'avais pas correctement défini la configuration du projet sur " Utiliser MFC dans un DLL " partagé. Mon erreur a été de ne configurer cette option que pour Release mode et lorsque j'ai compilé dans Debug mode, cette erreur s'est produite. L’application des paramètres pour la configuration du mode Débogage et Libération a résolu le problème pour moi.

Voici les réglages:

Projet -> "Propriétés" du projet -> Propriétés de configuration -> Général -> Paramètres par défaut du projet -> Utilisation de MFC: Utiliser MFC dans un DLL partagé

0
Ahmed