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

j'ai vérifié une copie D'une application C++ de SourceForge (HoboCopy, si vous êtes curieux) et j'ai 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 mettre, pour qu'il soit trouvé lors de la compilation?

y a-t-il des annuaires Spéciaux?

72
demandé sur Peter Mortensen 2008-12-02 23:49:58

6 réponses

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

  • Dans la source de courant active directory.
  • dans les répertoires supplémentaires Include dans les propriétés du projet (sous C++ | General).
  • Dans Visual Studio C++ include sous Outils Options les Projets et les Solutions VC++ Annuaires .

dans votre cas, ajoutez le répertoire dans lequel se trouve l'en-tête aux propriétés du projet.

92
répondu Rob Prouse 2017-05-21 20:02:09

si le projet est livré avec un fichier de projet Visual Studio, alors il doit déjà être configuré pour trouver les en-têtes pour vous. Dans la négative, vous devrez ajouter le répertoire include aux paramètres du projet en cliquant avec le bouton droit de la souris sur le projet et en sélectionnant Propriétés, en cliquant sur "C/C++", et en ajoutant le répertoire contenant les fichiers include à la zone d'édition "Additional Include Directories".

10
répondu Adam Rosenfield 2008-12-02 20:54:11

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

dans Visual Studio 2010, le dialogue" Tools | Options | Projects and Solutions | VC++ Directories "rapporte que" VC++ Directories editing in Tools > Options has been deprecated", proposant que vous utilisiez le Gestionnaire de propriétés plutôt contre-intuitif.

si vous voulez vraiment, vraiment mettre à jour la valeur par défaut $(IncludePath), vous devez Hacker l'entrée appropriée dans un des fichiers XML:

\Fichiers De Programme (x86)\MSBuild\Microsoft.Cpp\v4.0\plates-formes\Win32\PlatformToolsets\v100 \ Microsoft.Rpc.Win32.v100.prop

ou

\Fichiers De Programme (x86)\MSBuild\Microsoft.Cpp\v4.0\plates-formes\x64\PlatformToolsets\v100 \ Microsoft.Rpc.X64.v100.prop

(probablement pas recommandé par Microsoft.)

6
répondu SteveWilkinson 2017-05-23 12:02:48

il semble y avoir un bug dans la communauté de Visual Studio 2015. Pour un projet 64 bits, le dossier include n'est pas trouvé à moins qu'il ne soit dans la liste de configuration de win32 bit dossiers Include supplémentaires .

4
répondu Markus 2017-05-21 20:04:09

Il existe une nouvelle question de ce qui est frappant mieux le problème en demandant Comment inclure les chemins de travailler dans Visual Studio?

il se révèle la façon de le faire dans les nouvelles versions de VisualStudio

  • dans le projet actuel seulement (comme la question est posée ici aussi) ainsi que
  • pour chaque nouveau projet comme valeur par défaut

le second est ce que la réponse de Steve Wilkinson ci-dessus explique, ce qui est, comme il le suppose lui-même, pas ce que Microsoft recommanderait.

pour le dire le raccourci ici: le faire, mais le faire dans le répertoire des utilisateurs à

C:\Users\UserName\AppData\Local\Microsoft\MSBuild\v4.0

dans le fichier XML

Microsoft.Rpc.Win32.utilisateur.prop

et / ou

Microsoft.Rpc.x64.utilisateur.prop

et non C:\program fichiers-directory, où le fichier Factory non modifié de Microsoft est censé résider.

alors vous le faites comme VisualStudio le fait aussi et tout est régulier.

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

1
répondu Pablo el Puro 2017-05-23 12:26:27

en fait sur mon windows 10 avec la communauté visual studio 2017, les en-têtes C++ sont:

  1. C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.15.26726\include

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

le 1er contient des en-têtes C++ standards tels que iostream , algorithm . Le 2 contient de vieux en-têtes C tels que stdio.h , string.h . Le numéro de version peut être différent selon votre logiciel.

J'espère que ça aidera.

0
répondu linrongbin 2018-10-03 14:49:57