Как работают пути включения в Visual Studio? - PullRequest
43 голосов
/ 20 апреля 2010

Visual Studio сводит меня с ума, и я подозреваю, что я делаю что-то не так.

Вот что я делаю: я установил Visual Studio (Pro '08) очень давно, я установил Windows SDK (Win 7 x64), кто-то отправил мне проект по электронной почте, он не может быть собран.

Неизменно не может найти windows.h. Хотя достаточно просто включить C:\Program Files\Microsoft SDKs\Windows\v7.0\Include в настройки проекта каждого отдельного проекта, я чувствую, что это может быть неправильным способом сделать это. Есть ли способ как-то сделать Visual Studio глобально осведомленным об этих файлах?
Я также попытался включить вышеуказанный каталог в переменную path, но это ничего не изменило.

Кроме того, он случайным образом найдет windows.h, но не winresrc.h в том же каталоге.

Изменить:
Это была проблема с моей машиной. Почему-то Visual Studio подумал, что мой Windows SDK находится не в том месте. Смотрите принятый ответ и комментарии для исправления.

Ответы [ 6 ]

60 голосов
/ 12 апреля 2013

@ Решение RichieHindle теперь устарело начиная с Visual Studio 2012. Как подсказывает VS Studio, теперь:

Каталоги VC ++ теперь доступны в виде списка свойств пользователя, который по умолчанию добавляется ко всем проектам.

Чтобы задать путь включения, вы должны щелкнуть правой кнопкой мыши проект и перейти к:

Properties/VC++ Directories/General/Include Directories

Скриншот: enter image description here

23 голосов
/ 24 февраля 2016

Чтобы возобновить рабочие решения в VisualStudio 2013 и 2015 также:

Добавить include-путь только к текущему проекту

В Solution Explorer (палитре-окне VisualStudio-mainwindow) откройте контекстное меню для проекта и выберите «Свойства», а затем на левой панели диалогового окна «Страницы свойств» разверните узел «Конфигурация». Свойства и выберите каталоги VC ++. Здесь можно указать дополнительные пути include- или lib.

Это то, что Stackunderflow и user1741137 говорят в ответах выше. Это то, что Microsoft объясняет и в MSDN .

Автоматически добавлять include-путь к каждому новому проекту

Вопрос в том, что Джей Элстон задает в комментарии выше, и что является очень очевидным и жгучим вопросом в моих глазах, что, похоже, пока не получено ответа.

Существуют обычные способы сделать это в VisualStudio (см. CurlyBrace.com ), которые, по моему опыту, не работают должным образом. В том смысле, что он работает только один раз, и после этого он больше не расширяется и не может быть удален. Подход Стив Уилкинсон в другом тесно связанном потоке StackOverflow, редактирующий XML-файл Microsoft-Factory в каталоге «программные файлы» - вероятно, рискованный хак, так как Microsoft не ожидает, что встретит там что-то чужое. Эффект потенциально непредсказуем. Что ж, я предпочитаю не слишком рискованно судить об этом, но в любом случае лучший способ сделать работу VisualStudio непостижимой, по крайней мере, для кого-то другого.

То, что работает нормально по сравнению с этим, - это редактирование соответствующего пользовательского XML-файла:

C: \ Users \ имя_пользователя \ AppData \ Local \ Microsoft \ MSBuild \ v4.0 \ Microsoft.Cpp.Win32.user.props

/ или

C: \ Users \ имя_пользователя \ AppData \ Local \ Microsoft \ MSBuild \ v4.0 \ Microsoft.Cpp.x64.user.props

Например:

<?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>

Если каталог «C: \ any-name \ include» будет добавлен к текущему include-пути, а каталог «C: \ any-name \ lib» - путь к библиотеке. Здесь мы можем отредактировать его назад в расширенном и удаленном смысле и удалить все, удалив все содержимое тега.

Это то, что делает сам VisualStudio, делая это обычным образом, как описывает CurlyBrace . Как уже говорилось, его нельзя редактировать в CurlyBrace-way после этого nomore, но в XML-режиме редактирования это так.

Для получения дополнительной информации см. Брайан Тайлер @ MSDN-Blog 2009, что, по общему признанию, не очень свежо, но всегда то, на что Microsoft ссылается.

22 голосов
/ 20 апреля 2010

Этот ответ относится только к древним версиям Visual Studio - см. Более свежие ответы для современных версий.

Вы можете установить глобальный путь включения Visual Studio здесь:

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

2 голосов
/ 17 апреля 2014

Если вы пытаетесь изменить только пути включения для проекта, а не для всех решений затем в Visual Studio 2008 сделайте это: Щелкните правой кнопкой мыши имя проекта в Навигаторе решений. Во всплывающем меню выберите «Свойства». В диалоговом окне страниц свойств выберите «Свойства конфигурации» -> C / C ++ / General. Нажмите в текстовом поле рядом с надписью «Дополнительные включаемые файлы» и найдите соответствующий каталог. Выберите ОК.

Что меня раздражает, так это то, что некоторые ответы на исходный вопрос не относятся к упомянутой версии Visual Studio.

2 голосов
/ 05 марта 2011

Чтобы успешно использовать Windows SDK, вам нужно не только включить файлы, доступные для ваших проектов, но также и библиотечные файлы и исполняемые файлы (инструменты).Чтобы установить все эти каталоги, вы должны использовать WinSDK Configuration Tool .

0 голосов
/ 20 апреля 2010

Вы должны убедиться и иметь следующее:

#include <windows.h>

а не это:

#include "windows.h"

Если это не проблема, тогда проверьте ответ RichieHindle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...