erreur s'il vous Plaît #define _AFXDLL ou de ne pas utiliser /MD[d] se produit même après avoir fait des changements dans les Propriétés du Projet
Je suis en train de travailler sur Win32 projet dans Visual Studio 2011. C'est la génération de MFC erreur quand je comprend afx.h ou afxwin.h.
Pour résoudre ce problème, j'ai fait les changements suivants dans les Propriétés du Projet, onglet :
1) Utilisation des MFC : Utiliser les MFC dans une DLL partagée
2) C++ -> Génération de Code -> Bibliothèque d'Exécution -> multithread DLL de Débogage(/MDd)
Encore il me donne l'erreur suivante quand j'ai créer 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 Win32 projet est de générer MFC erreur et comment dois-je supprimer cette erreur.De bien vouloir me guider.
- Pourquoi ne pas simplement faire ce qu'il dit et #define _AFXDLL? C/C++, de Préprocesseur, Définitions de Préprocesseur réglage.
- Regardez le journal de génération de fichier - assurez-vous que il ya une
/D _AFXDLL
dans la ligne de commande émis pour le compiler. L' "Utiliser les MFC dans une DLL partagée" devrait provoquer que cela se produise. Peut-être un nettoyage/reconstruction pourrait aider? Aussi, VC++11 est Visual Studio 2012. - Merci Hans Passant. J'ai ajouté _AFXDLL dans les définitions de Préprocesseur. Mais il donne toujours la même erreur.
- Quel est le type de projet? (dll? statique de la lib? exe?)
- type de projet est dll.
- Vérifier ce que Michael a dit: dans le journal de génération, est-il un _AFXDLL? Ne pas définir manuellement, il est ajouté lorsque vous le réglez sur "Utiliser les MFC dans une DLL partagée". Si elle est définie il, cela sonne comme une rassis séquence d'en-tête de chose. Supprimer manuellement tout ce qui n'est pas un fichier source, le fichier de projet ou de ressources et de construire à nouveau.
- Le projet sur lequel je travaille a sa propre méthode de construction d'une solution. Je ne suis donc pas en mesure de vérifier le journal de génération.
Vous devez vous connecter pour publier un commentaire.
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
J'ai eu le même problème, mais seulement en résolu quand j'ai réalisé que je devais choisir "Utiliser les MFC dans une DLL partagée" drapeau de debug et release configurations (je n'avais que de la définir pour debug).
Dans mon expérience de deux façons étape.
supposons que Vous voulez liaison STATIQUE:
a) définir "Utiliser les MFC dans une Bibliothèque Statique"
b) ajouter:
#define _AFXDLL 1
dans stdafx.h
fonctionne sur VS 2012
J'ai lutté avec un problème similaire. Dans mon cas, il a été causé par les paramètres liés aux différents fichiers cpp. Étant donné qu'elles contiennent des symboles de préprocesseur, en fait, ils ont bloqué le projet (ou accessoires) paramètres de niveau qui utilisent des symboles de préprocesseur.
Afin de vérifier si vous avez le fichier de paramètres au niveau de votre vcxproj. Si vous le faites, vérifiez si elles sont égales pour les paramètres de niveau de projet. Si elles le sont, vous pouvez supprimer en toute sécurité. Si il y a des différences, vous avez à régler tout cela.
Rpc fichier de paramètres de niveau devrait normalement être vide (il y a quelques exceptions, quand vous en avez besoin), mais il est très facile d'en ajouter par accident.
Je recevais ce message, car je n'ai pas de définir correctement la configuration du projet "Utiliser les MFC dans une DLL Partagée". Mon erreur est que j'ai mis cette option uniquement pour les Libération mode et lorsque j'ai compilé dans Debug mode j'ai eu cette erreur. Appliquer les paramètres pour le Debug & Libération de la configuration en mode résolu le problème pour moi.
Suivantes des paramètres:
Projet -> "projet" Propriétés -> Propriétés de Configuration -> Général> paramètres par Défaut Projet -> Utilisation des MFC :Utiliser les MFC dans une DLL partagée
Ouvrir
Propriétés du projet -> Propriétés de Configuration -> C/C++ -> Génération de Code -> Bibliothèque d'Exécution
Sélectionnez multithread (/MT) dans la Bibliothèque d'Exécution de la Section.
Cela permettra d'éliminer de votre erreur. Profitez de.
Pour moi, l'objectif doit être modifié à partir de x64 x86.
J'ai aussi été confronté au même erreur. Le message d'erreur est explicite.
Vous devez ajouter
#define _AFXDLL
dans votreAFX.h
fichier.Ajouter le
#define _AFXDLL
indirectement par un projet, les paramètres de configuration