web-dev-qa-db-fra.com

Où Visual Studio recherche-t-il les fichiers d'en-tête C ++?

J'ai extrait une copie d'une application C++ de SourceForge (HoboCopy, si vous êtes curieux) et essayé de la compiler.

Visual Studio me dit qu'il ne peut pas trouver un fichier d'en-tête particulier. J'ai trouvé le fichier dans l'arborescence des sources, mais où dois-je le placer pour qu'il soit trouvé lors de la compilation?

Existe-t-il des annuaires spéciaux?

83
Brian Sullivan

Visual Studio recherche les en-têtes dans cet ordre:

  • Dans le répertoire source actuel.
  • Dans les répertoires d'inclusion supplémentaires des propriétés du projet ( Projet -> [nom du projet] Propriétés , sous C/C++ | Général).
  • Dans Visual Studio C++ , incluez les répertoires sous Outils Options Projets et solutions Répertoires VC++ .
  • Dans les nouvelles versions de Visual Studio (2015+), l'option ci-dessus est obsolète et une liste des répertoires d'inclusion par défaut est disponible à l'adresse Propriétés du projet Configuration Répertoires VC++

Dans votre cas, ajoutez le répertoire correspondant à l'en-tête aux propriétés du projet ( Propriétés du projet Configuration C/C++ Général Répertoires d'inclusion supplémentaires ).

102
Rob Prouse

En fait, sur mes fenêtres 10 avec la communauté Visual Studio 2017, les chemins d’en-tête C++ sont les suivants:

  1. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include

  2. C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt

Le 1er contient des en-têtes C++ standard tels que <iostream>, <algorithm>. Le 2nd contient les anciens en-têtes en C tels que <stdio.h>, <string.h>. Le numéro de version peut être différent en fonction de votre logiciel.

J'espère que cela aiderait.

12
linrongbin

Si le projet contient un fichier de projet Visual Studio, celui-ci doit déjà être configuré pour rechercher les en-têtes pour vous. Sinon, vous devrez ajouter le répertoire de fichiers inclus aux paramètres du projet en cliquant avec le bouton droit de la souris sur le projet, en sélectionnant Propriétés, en cliquant sur "C/C++" et en ajoutant le répertoire contenant les fichiers inclus aux "Répertoires d'inclusion supplémentaires". zone d'édition.

11
Adam Rosenfield

J'ai essayé d'ajouter ceci comme commentaire à l'affichage de Rob Prouse , mais le manque de formatage l'a rendu inintelligible.

Dans Visual Studio 2010, la boîte de dialogue "Outils | Options | Projets et solutions | Répertoires VC++" indique que "L'édition de répertoires VC++ dans Outils> Options est obsolète", vous proposant d'utiliser le gestionnaire de propriétés plutôt contre-intuitif.

Si vous voulez vraiment mettre à jour le $ par défaut (IncludePath), vous devez pirater l'entrée appropriée dans l'un des fichiers XML:

\ Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v100\Microsoft.Cpp.Win32.v100.props

ou

\ Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets\v100\Microsoft.Cpp.X64.v100.props

(Probablement pas recommandé par Microsoft.)

6
SteveWilkinson

Il semble y avoir un bogue dans la communauté Visual Studio 2015. Pour un projet 64 bits, le dossier d'inclusion est introuvable, sauf s'il se trouve dans la liste de configuration win32 bits Dossiers d'inclusion supplémentaires.

5
Markus

Il existe une question plus récente qui pose le problème mieux demander Comment fonctionnent les chemins d'inclusion dans Visual Studio?

La manière de le faire est révélée dans les nouvelles versions de VisualStudio

  • dans le projet actuel uniquement (comme la question est définie ici aussi) ainsi que
  • pour chaque nouveau projet par défaut

La seconde est ce que la réponse de Steve Wilkinson explique ci-dessus, ce qui, comme il le supposait lui-même, ne correspond pas à ce que Microsoft recommanderait.

Pour dire le raccourci ici: faites-le, mais faites-le dans le répertoire utilisateur à

C:\Utilisateurs\Nom d'utilisateur\AppData\Local\Microsoft\MSBuild\v4.0

dans le fichier XML

Microsoft.Cpp.Win32.user.props

et/ou

Microsoft.Cpp.x64.user.props

et non dans le répertoire C:\program files - où devrait figurer le fichier-usine non modifié de Microsoft.

Ensuite, vous procédez de la même manière que VisualStudio et tout est régulier.

Pour plus d'informations, pourquoi le faire pareil, voir ma réponse .

3
Pablo el Puro