web-dev-qa-db-fra.com

Lieur: impossible d'ouvrir le fichier 'nafxcwd.lib'

J'ai un problème avec la compilation de mon projet via Visual Studio 2013. J'ai eu cette erreur de l'éditeur de liens: 

LINK : fatal error LNK1104: cannot open file 'nafxcwd.lib'

Selon cette page , je dois utiliser MFC dans une bibliothèque partagée. Mais je n'utilise pas du tout le MFC.
Toutes mes bibliothèques et mon projet principal compilés avec les paramètres Use Standard Windows Libraries. Ce problème se produit uniquement lorsque j'essaie de générer un projet via la chaîne d'outils Visual Studio 2013, mais que cette dernière a été construite avec succès avec la chaîne d'outils Visual Studio 2010. 

P.S. le projet a été déplacé de Visual Studio 6.0 vers Visual Studio 2013.

16
user922871

Il semble que dans Microsoft Visual C++ 6.0 Édition Standard ne prend pas en charge la liaison statique avec les bibliothèques MFC, comme l'indique la page Microsoft. Mais dans Visual Studio 2013, vous pouvez établir un lien statique avec les bibliothèques Microsoft. Cliquez sur ce lien https://support.Microsoft.com/en-us/kb/243458 pour résoudre votre problème.

Sur le site Microsoft:

Pour modifier les paramètres de votre projet MFC afin de vous lier dynamiquement aux bibliothèques MFC, procédez comme suit: Ouvrez votre projet MFC.

  1. Dans le menu Projet, cliquez sur Paramètres.
  2. Dans la zone de liste déroulante Paramètres pour, sélectionnez Toutes les configurations. Cliquez sur l'onglet Général. Si ce n'est pas visible, utilisez les boutons de défilement à onglet pour faire défiler le curseur vers la gauche.
  3. Dans la zone de liste déroulante Microsoft Foundation Classes, sélectionnez Utiliser MFC dans une DLL partagée . Cliquez sur OK pour enregistrer les modifications.
3
user4272649

En mettant à jour un projet VS 2008 qui n'utilisait pas du tout MFC, j'ai rencontré le même problème et je l'ai corrigé en effectuant ces trois étapes. S'il vous plaît voir la photo pour avoir un coup d'oeil sur les propriétés du projet (VS 2008) en surbrillance.

 enter image description here

Étape 1

Ajoutez cette ligne #define _AFXDLL dans votre fichier stdafx.h

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers

#define _AFXDLL

Étape 2

Accédez à votre solution VS 2013 et ouvrez "Propriétés du projet -> C/C++ -> Génération de code -> Bibliothèque d'exécution" et remplacez la valeur par Débogage multi-thread DLL (/ MDd) (ajustez la configuration de votre version à Multi-threaded DLL (/ MD)} _, une fois que vous aurez terminé ces deux étapes, vous obtiendrez cette erreur de liaison.

erreur LNK1104: impossible d'ouvrir le fichier 'mfc120d.lib'

Maintenant, ici, vous devez définir le "Jeu de caractères" de votre projet sur Unicode au lieu de _MBCS

Étape 3

Maintenant, ouvrez "Propriétés du projet -> Général -> Valeurs par défaut du projet -> Jeu de caractères" et remplacez la valeur par {Utiliser le jeu de caractères Unicode}, cette partie nécessite désormais un peu plus de patience et de travail, vous devez changer les traits de votre chaîne wchar_t ou TCHAR dans vos fichiers source.

J'espère que cela résoudrait votre problème.

0
A.B.

J'ai eu le même problème, sauf qu'il compilé sur une machine, mais pas une autre. Résolu en installant la bibliothèque MFC multi-octets pour Visual Studio 2013 comme suggéré dans: Erreur MBCS lors de la construction du projet C++ MFC avec Visual Studio

0
kristian mo