2017-08-23 2 views
1

J'ai déjà lu this, et aucune des solutions n'a fonctionné.Pourquoi l'application MFC ne parvient-elle pas à générer un projet mis à niveau même après la définition de la DLL partagée?

  1. L'utilisation de MFC est définie sur Utiliser MFC dans un fichier DLL partagé pour toutes les configurations .
  2. _AFXDLL est défini sous C/C++ PreProcessor/MDd et/MD sont définis pour les configurations de débogage et de libération respectivement
  3. J'ai essayé de nettoyer et de construire.
  4. J'ai essayé de supprimer manuellement les répertoires de bin et de les reconstruire, mais je reçois toujours la même erreur me disant de faire ce que j'ai déjà fait.

L'erreur est. Erreur C1189 #error: L'application MFC de construction avec/MD [d] (version CRT dll) requiert une version de DLL partagée MFC. S'il vous plaît # define _AFXDLL ou ne pas utiliser/MD [d]

Ceci est un projet VC++ 6.0 dll mis à jour par VS2015.

+0

Les messages d'erreur vous dit de définir un symbole différent de celui que vous avez fait. Vous devez faire preuve de plus de diligence lorsque vous communiquez avec une machine. – IInspectable

+0

Vous voulez dire _AFXDLL plutôt qu'AFXDLL? Si oui, c'est juste une faute de frappe dans la question. Je n'ai pas défini le symbole du tout. L'IDE a fait. Je vais modifier la question pour résoudre ce problème. – shawn1874

Répondre

1

Je l'ai compris. Pour une raison quelconque, l'option «Hériter du parent ou du projet par défaut» n'a pas été cochée. La sélection des propriétés de projet correctes a ajouté _AFXDLL dans la section des valeurs héritées. Vérification qui a fonctionné. Lorsque j'ai mis à jour d'autres projets, je ne pense pas que cela a été décoché. Peut-être que je l'ai décoché pour une raison quelconque et oublié à ce sujet. Quoi qu'il en soit, il ne devrait pas être nécessaire d'ajouter manuellement _AFXDLL aux définitions du préprocesseur. Obtenez les paramètres du projet corrigés, et assurez-vous que vous héritez des valeurs qui ont été automatiquement remplis dans cette boîte de valeurs héritées par l'EDI.

enter image description here

+0

Les * "Valeurs héritées" * ne sont pas renseignées techniquement par l'EDI. Au lieu de cela, ils font partie du système de construction, stockés dans [feuilles de propriétés] (https://msdn.microsoft.com/fr-fr/library/669zx6zc.aspx) qui sont inclus dans le fichier .vcxproj. – IInspectable