Comment fonctionne include paths dans Visual Studio?

Visual Studio me rend folle et je soupçonne que je fais quelque chose de mal.

C'est ce que je fais: J'ai installé Visual Studio (Pro '08) Il y a longtemps, j'ai installé le SDK Windows (Win 7 x64), quelqu'un m'envoie un e-mail d'un projet, il ne réussit pas à construire.

invariablement, il ne peut pas trouver des fenêtres.H. Bien qu'il soit assez facile d'inclure C:Program FilesMicrosoft SDKsWindowsv7.0Include dans les paramètres de chaque projet, je pense que ce n'est peut-être pas la bonne façon de le faire. Y a-t-il un moyen de rendre Visual Studio globalement conscient de ces fichiers?

J'ai aussi essayé d'inclure le répertoire ci-dessus dans la variable path , mais cela n'a rien changé.

aussi, il trouvera des fenêtres au hasard.h mais pas winresrc.h dans le même répertoire.

Edit:

C'était un problème avec ma machine. D'une certaine manière, Visual Studio a pensé que mon SDK Windows était dans le mauvais endroit. Voir la réponse acceptée et les commentaires pour le correctif.

40
demandé sur bastibe 2010-04-20 19:30:57

6 réponses

vous pouvez définir le chemin D'inclusion global de Visual Studio ici:

Tools / Options / Projects and Solutions / VC++ Directories / Include files

mise à jour (dans Visual Studio 2015): enter image description here

21
répondu RichieHindle 2016-12-16 20:52:22

@RichieHindle solution est maintenant déprécié à partir de Visual Studio 2012. Comme L'indique maintenant L'invite VS studio:

Les répertoires

VC++ sont maintenant disponibles en tant que feuille de propriété de l'utilisateur qui est ajoutée par défaut à tous les projets.

pour définir un chemin d'inclusion, vous devez maintenant faire un clic droit sur un projet et aller à:

Properties/VC++ Directories/General/Include Directories

Capture d'écran: enter image description here

55
répondu stackunderflow 2016-12-16 21:01:07

pour reprendre les solutions de travail dans VisualStudio 2013 et 2015 aussi:

Ajouter un chemin d'inclusion au projet en cours seulement

dans Solution Explorer (une palette-fenêtre de la fenêtre de VisualStudio-mainwindow), ouvrez le menu raccourci pour le projet et choisissez Propriétés, puis dans le volet gauche de la boîte de dialogue de Pages de propriétés, élargissez les propriétés de Configuration et sélectionnez VC++ répertoires. Chemins supplémentaires d'inclusion ou de libération sont spécifiqueslà.

c'est quoi Stackunderflow et user1741137 dire dans les réponses ci-dessus. C'est ce que Microsoft explique dans MSDN aussi.

Ajouter un chemin d'inclusion à chaque nouveau projet automatiquement

C'est la question, ce que Jay Elston pose dans un commentaire ci-dessus et ce qui est une question très évidente et brûlante dans mon yeux, ce qui semble ne pas être encore répondu ici.

il existe des façons régulières de le faire dans VisualStudio (voir CurlyBrace.com ), ce qui, d'après mon expérience, ne fonctionne pas correctement. Dans le sens, qu'il ne fonctionne qu'une fois, et par la suite, il n'est plus extensible et nomore amovible. L'approche de Steve Wilkinson dans un autre fil de StackOverflow, éditant le fichier Microsoft-Factory-XML dans les ' fichiers de programme’ - répertoire est probablement un piratage risqué, car il n'est pas prévu par Microsoft pour y rencontrer quelque chose d'étranger. L'effet est potentally imprévisible. Eh bien, j'aime plutôt le juger risqué pas beaucoup, mais de toute façon la meilleure façon de rendre VisualStudio travail incompréhensible au moins pour quelqu'un d'autre.

ce qui fonctionne bien par rapport à, est l'édition de L'utilisateur correspondant-XML-file:

C:\Users\UserName\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Rpc.Win32.utilisateur.prop

ou / et

C:\Users\UserName\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Rpc.x64.utilisateur.prop

par exemple:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>C:\any-name\include;$(IncludePath)</IncludePath>
    <LibraryPath>C:\any-name\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

Où le répertoire ‘C:\any-name\include "seront ajoutés à la présente inclure chemin et le répertoire ‘C:\any-name\lib" pour le library-path. Ici, nous pouvons l'éditer dans un sens extending et removing et tout supprimer, en supprimant tout le contenu de la balise .

est le ce qui rend VisualStudio lui-même, le faisant de la manière régulière ce que CurlyBrace décrit. Comme dit, il n'est pas modifiable dans le CurlyBrace-way par la suite nomore, mais dans le XML-editing-way il est.

pour plus de détails, voir Brian Tyler@MSDN-Blog 2009, ce qui est certes pas très frais, mais toujours ce que Microsoft est en train de lier.

21
répondu Pablo el Puro 2017-05-23 12:26:22

pour utiliser Windows SDK avec succès, vous avez besoin non seulement de rendre les fichiers include disponibles pour vos projets, mais aussi des fichiers de bibliothèque et des exécutables (outils). Pour définir tous ces répertoires, vous devez utiliser outil de Configuration WinSDK .

2
répondu Piotr Dobrogost 2011-03-04 21:12:30

Si vous essayez seulement de modifier les chemins d'inclusion pour un projet, et pas pour toutes les solutions puis dans Visual Studio 2008 faites ceci: Cliquez-droit sur le nom du projet dans la Solution de navigation. Dans le menu contextuel, sélectionnez Propriétés. Dans la boîte de dialogue des pages de propriétés, sélectionnez Propriétés de Configuration->C/C++/General. Cliquez dans la zone de texte à côté du label "Additional Include Files" et cherchez le répertoire approprié. Sélectionnez OK.

ce qui m'ennuie, c'est que certains des réponses à la question posée à l'origine ne s'appliquent pas à la version de Visual Studio qui a été mentionnée.

2
répondu user1741137 2014-04-17 13:35:37

vous devez être sûr et avoir le suivant:

#include <windows.h>

et non ceci:

#include "windows.h"

si ce n'est pas le problème, cochez réponse de RichieHindle .

-3
répondu Sam Harwell 2017-05-23 12:34:38