Где находятся заголовочные файлы visual studio

Обновлено: 06.07.2024

Я проверил копию приложения C++ из SourceForge (HoboCopy, если вам интересно) и попытался скомпилировать его.

Visual Studio говорит мне, что он не может найти конкретный заголовочный файл. Я нашел файл в исходном дереве, но куда его нужно поместить, чтобы он был найден при компиляции?

Существуют ли специальные каталоги?

На коробке CentOS 5.7 у меня возникли проблемы с установкой новейшей версии mysql2 gem; она не находит errmsg.h: /usr/bin/ruby extconf.rb checking for rb_thread_blocking_region(). yes checking for rb_wait_for_single_fd(). no checking for mysql_query() in -lmysqlclient. yes checking for.

Я установил visual studio 2010 ultimate version, и все работало отлично, и моя среда разработки работала хорошо. Однако недавно у меня возникла проблема, в которой каждый фрагмент кода выдает мне ошибку о том, что заголовочные файлы не найдены, например iostream stdio.h conio.h и т. д. Я точно.

Visual Studio ищет заголовки в следующем порядке:

  • В текущем исходном каталоге.
  • В дополнительных каталогах Include в свойствах проекта ( Project ->[project name] Properties , under C/C++ | General).
  • В Visual Studio C++ включите каталоги в разделе ИнструментыПараметрыпроекты и решениякаталоги VC++.
  • В новых версиях Visual Studio (2015+) вышеуказанная опция устарела, и список каталогов по умолчанию include доступен в разделе свойства проектаконфигурациякаталоги VC++

В вашем случае добавьте каталог, который является заголовком, в свойства проекта ( свойства проектаконфигурацияC/C++общиедополнительные каталоги включения ).

На самом деле в моем сообществе windows 10 с visual studio 2017 путь к заголовкам C++ :

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

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

1-й содержит стандартные заголовки C++, такие как <iostream> , <algorithm> . 2-й содержит старые заголовки C, такие как <stdio.h> , <string.h> . Номер версии может отличаться в зависимости от вашего программного обеспечения.

Надеюсь, это поможет.

Если проект поставляется с файлом проекта Visual Studio, то он уже должен быть настроен для поиска заголовков для вас. Если нет, то вам придется добавить каталог включаемых файлов в настройки проекта, щелкнув правой кнопкой мыши проект и выбрав пункт Свойства, нажав на "C/C++", и добавив каталог, содержащий включаемые файлы, в поле редактирования "Additional Include Directories".

Я пытался сделать статический анализ кода в своем проекте, который в основном состоит из файлов .hpp, так как там все templated, но, к сожалению, я получаю информацию от PSV-Studio о том, что заголовочные файлы не могут быть обработаны. Это кажется немного странным. В современном C++ шаблоны есть.

Мой проект имеет около двадцати заголовочных файлов, и он начинает становиться привязкой для поиска по заголовочным файлам, чтобы найти нужный мне заголовочный файл. У меня есть классы с пространством имен, и каждое пространство имен-это, по сути, каталог. Как я могу просматривать заголовочные.

В Visual Studio 2010 диалог "Tools | Options | Projects and Solutions | VC++ Directories" сообщает, что" редактирование каталогов VC++ в сервисах > параметры устарело", предлагая использовать довольно нелогичный менеджер свойств.

Если вы действительно хотите обновить значение по умолчанию $(IncludePath), вам нужно взломать соответствующую запись в одном из файлов XML:

\Program файлов (x86)\MSBuild\Microsoft.Cpp\v4.0\платформ\с Win32\PlatformToolsets\твердотельного накопителя V100, если\Microsoft.Cpp.Win32.v100.props

\Program файлов (x86)\MSBuild\Microsoft.Cpp\v4.0\платформ\х64\PlatformToolsets\твердотельного накопителя V100, если\Microsoft.Cpp.X64.v100.props

(Вероятно, не рекомендуется Microsoft.)

Кажется, в сообществе Visual Studio 2015 есть ошибка. Для проекта 64-bit папка include не найдена, если она не находится в списке дополнительных папок Include конфигурации win32 bit.

Существует более новый вопрос, что лучше всего поражает проблему, спрашивая, как работают пути включения в Visual Studio?

В новых версиях VisualStudio раскрывается способ сделать это

  • только в текущем проекте (так как вопрос задан и здесь), а также
  • для каждого нового проекта по умолчанию

Второй - это то, что объясняет вышеприведенный ответ Стива Уилкинсона, который, как он сам предполагал, не является тем, что рекомендует Microsoft.

Чтобы сказать это коротко здесь: сделайте это, но сделайте это в пользовательском каталоге по адресу

и не в каталоге C:\program files, где, как ожидается, будет находиться неизмененный Заводской файл Microsoft.

Затем вы делаете это так же, как VisualStudio делает это тоже, и все происходит регулярно.

Для получения дополнительной информации о том, почему это нужно делать одинаково, смотрите мой ответ там .

Похожие вопросы:

Я нашел статью, где Visual Studio ищет заголовочные файлы C++? для начала неплохо, но у меня есть еще вопросы. Общий порядок, в котором VS ищет включаемые файлы, - это (1) локальный каталог, (2) те.

В системе Unix, где gcc ищет заголовочные файлы? Сегодня утром я потратил немного времени на поиски некоторых системных заголовочных файлов, поэтому подумал, что это будет хорошая информация.

Есть ли способ изменить, где visual studio ищет файлы проекта(.vcxproj)? Таким образом, я могу хранить все связанные файлы visual studio в отдельной папке VS и иметь мой проект все еще открытым и.

На коробке CentOS 5.7 у меня возникли проблемы с установкой новейшей версии mysql2 gem; она не находит errmsg.h: /usr/bin/ruby extconf.rb checking for rb_thread_blocking_region(). yes checking for.

Я установил visual studio 2010 ultimate version, и все работало отлично, и моя среда разработки работала хорошо. Однако недавно у меня возникла проблема, в которой каждый фрагмент кода выдает мне.

Я пытался сделать статический анализ кода в своем проекте, который в основном состоит из файлов .hpp, так как там все templated, но, к сожалению, я получаю информацию от PSV-Studio о том, что.

Мой проект имеет около двадцати заголовочных файлов, и он начинает становиться привязкой для поиска по заголовочным файлам, чтобы найти нужный мне заголовочный файл. У меня есть классы с.

Я разрабатываю проект в Visual Studio 2015 с C++/OpenGL и парой полезных библиотек. Я разделил свой собственный код на два основных каталога: /src для всех файлов .cpp и каталог / include для всех.

Я знаю изрядное количество Java и Eclipse IDE, но новичок в Visual Studio и C++. В Eclipse/Java,, если вы используете предопределенный класс, Eclipse услужливо предлагает соответствующий.

Я проверил копию приложения C++ из SourceForge (HoboCopy, если вам интересно) и попытался скомпилировать его.

Visual Studio говорит мне, что он не может найти конкретный файл заголовка. Я нашел файл в дереве источника, но куда его нужно поместить, чтобы он был найден при компиляции?

есть ли специальные каталоги?

в Visual Studio ищет заголовки в следующем порядке:

  • В текущем каталоге.
  • в дополнительных каталогах включить в свойства проекта (в разделе C++ | General).
  • в Visual Studio C++ каталоги включения под инструментыопциипроекты и решениякаталоги VC++.

в вашем случае добавьте каталог, который заголовок в свойствах проекта.

Если проект поставляется с файлом проекта Visual Studio, то это уже должно быть настроено для поиска заголовков для вас. Если нет, вам нужно будет добавить каталог include file в настройки проекта, щелкнув правой кнопкой мыши проект и выбрав Свойства, нажав "C/C++" и добавив каталог, содержащий файлы include, в поле редактирования "дополнительные каталоги Include".

в Visual Studio 2010 диалоговое окно "Инструменты | Параметры | проекты и решения | каталоги VC++" сообщает, что "редактирование каталогов VC++ в инструментах > параметры устарело", предлагая использовать довольно интуитивно понятный диспетчер свойств.

Если вы действительно хотите обновить $(IncludePath) по умолчанию, вам нужно взломать соответствующая запись в одном из XML-файлов:

\Program Files (x86)\MSBuild\Microsoft.СРР\В4.0\платформ\с Win32\PlatformToolsets\твердотельного накопителя V100, если\Майкрософт.СРР.С Win32.твердотельного накопителя V100, если.реквизит

\Program Files (x86)\MSBuild\Microsoft.СРР\В4.0\платформ\х64\PlatformToolsets\твердотельного накопителя V100, если\Майкрософт.СРР.Х64.твердотельного накопителя V100, если.реквизит

(вероятно, не рекомендуется Microsoft.)

кажется, в сообществе Visual Studio 2015 есть ошибка. Для 64-разрядного проекта папка include не найдена, если она не находится в конфигурации win32Дополнительно Включить Папки список.

существует более новый вопрос, что поражает проблему лучше спрашивать Как включить пути в Visual Studio?

там становится известно, как это сделать в более новых версиях VisualStudio

  • только в текущем проекте (поскольку вопрос задан здесь), а также
  • для каждого нового проекта по умолчанию

второй является то, что ответ Стива Уилкинсон выше объясняет, что, как он сам предположил, не то, что Microsoft порекомендовала бы.

скажи это shortway здесь: сделай это, но сделай это в пользовательском каталоге в

и не в C:\program файлы-каталог, в котором, как ожидается, будет находиться неизмененный Заводской файл Microsoft.

тогда вы делаете это так, как VisualStudio делает это тоже, и все регулярно.

для получения дополнительной информации, почему это так, см. Мой ответ здесь.

на самом деле на моем windows 10 с сообществом visual studio 2017 путь заголовков C++:

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

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

1-й содержит стандартные заголовки c++, таких как iostream , algorithm . 2-й содержит старые заголовки C, такие как stdio.h , string.h . Номер версии может отличаться в зависимости от программного обеспечения.

Я проверил копию приложения С++ из SourceForge (HoboCopy, если вам интересно) и попытался скомпилировать его.

Visual Studio сообщает мне, что он не может найти конкретный файл заголовка. Я нашел файл в исходном дереве, но где его нужно поместить, чтобы он был найден при компиляции?

Существуют ли специальные каталоги?

Visual Studio ищет заголовки в следующем порядке:

  • В текущем исходном каталоге.
  • В разделе "Дополнительные каталоги" в свойствах проекта ("Свойства проекта → [имя проекта]" в разделе "C/C++ | Общие").
  • В Visual Studio C++ Включите каталоги в разделе Инструменты → Параметры → Проекты и решения → V C++ Каталоги.
  • В новых версиях Visual Studio (2015+) вышеуказанная опция устарела, и список включаемых по умолчанию каталогов доступен в Свойства проекта → Конфигурация → V C++ Каталоги

В вашем случае добавьте каталог с заголовком в свойства проекта (Свойства проекта → Конфигурация → C/C++ → Общие → Дополнительные каталоги включения).

Если проект поставляется с файлом проекта Visual Studio, то он уже должен быть настроен для поиска заголовков для вас. Если нет, вам нужно будет добавить каталог файлов include к настройкам проекта, щелкнув правой кнопкой мыши проект и выбрав "Свойства", нажав "C/С++" и добавив каталог, содержащий включенные файлы, в "Дополнительные каталоги включения",.

На самом деле в моем windows 10 с сообществом visual studio 2017 путь заголовков C++:

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

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

Первый содержит стандартные заголовки C++, такие как <iostream> , <algorithm> . Второй содержит старые заголовки C, такие как <stdio.h> , <string.h> . Номер версии может отличаться в зависимости от вашего программного обеспечения.

Надеюсь, это поможет.

Попробовал добавить это как комментарий к Rob Prouse, но отсутствие форматирования сделало его непонятным.

В Visual Studio 2010 диалоговое окно "Инструменты | Параметры | Проекты и решения | VС++-каталоги" сообщает, что "Редактирование каталогов VС++ в" Инструменты " > " Параметры "устарело", предлагая использовать довольно интуитивно понятный Property Manager.

Если вы действительно хотите обновить значение по умолчанию (IncludePath), вам нужно взломать соответствующую запись в одном из файлов XML:

Имена программных элементов, таких как переменные, функции, классы и т. д., должны быть объявлены, прежде чем их можно будет использовать. Например, нельзя просто писать x = 42 без предварительного объявления "x".

Объявление сообщает компилятору, является ли элемент int , a double , функцией class или другим элементом. Кроме того, каждое имя должно быть объявлено (прямо или косвенно) в каждом cpp-файле, в котором он используется. При компиляции программы каждый CPP-файл компилируется независимо в единицу компиляции. Компилятор не имеет сведений о том, какие имена объявляются в других единицах компиляции. Это означает, что если вы определите класс или функцию или глобальную переменную, необходимо предоставить объявление этого объекта в каждом дополнительном cpp-файле, который его использует. Каждое объявление этого элемента должно быть точно одинаковым во всех файлах. Небольшая несогласованность вызовет ошибки или непреднамеренное поведение, когда компоновщик пытается объединить все единицы компиляции в одну программу.

в Visual Studio 2019 функция модулей c++ 20 появилась в качестве улучшения и в конечном итоге заменяет файлы заголовков. Дополнительные сведения см. в разделе Общие сведения о модулях в C++.

Пример

В следующем примере показан общий способ объявления класса и его использования в другом исходном файле. Начнем с файла заголовка, my_class.h . Он содержит определение класса, но обратите внимание, что определение не завершено; Функция-член do_something не определена:

В файле реализации при необходимости можно использовать using оператор, чтобы не указывать каждое упоминание "my_class" или "cout" с "N::" или "std::". Не помещайте using операторы в файлы заголовков!

После того как компилятор завершит компиляцию каждого CPP-файла в OBJ-файлы, он передает OBJ-файлы компоновщику. Когда компоновщик объединяет объектные файлы, обнаруживается только одно определение для my_class; Он находится в OBJ-файле, созданном для my_class. cpp, и сборка выполняется.

Включить условия

Что следует разместить в файле заголовка

Поскольку файл заголовка потенциально может включаться в несколько файлов, он не может содержать определения, которые могут формировать несколько определений с одним и тем же именем. Следующие действия не разрешены или считаются очень неправильными.

  • встроенные определения типов в пространстве имен или глобальной области
  • невстроенные определения функций
  • определения неконстантных переменных
  • агрегатные определения
  • безымянные пространства имен
  • Директивы using

Использование using директивы не обязательно приведет к ошибке, но может вызвать проблему, так как она переводит пространство имен в область каждого CPP-файла, который напрямую или косвенно включает этот заголовок.

Пример файла заголовка

В следующем примере показаны различные виды объявлений и определений, допустимых в файле заголовка.

Читайте также: