¿Dónde busca Visual Studio los archivos de encabezado de C ++?

94

Revisé una copia de una aplicación C ++ de SourceForge (HoboCopy, si tienes curiosidad) e intenté compilarla.

Visual Studio me dice que no puede encontrar un archivo de encabezado en particular. Encontré el archivo en el árbol de fuentes, pero ¿dónde debo colocarlo para que se encuentre al compilarlo?

¿Hay directorios especiales?

Brian Sullivan
fuente

Respuestas:

114

Visual Studio busca encabezados en este orden:

  • En el directorio fuente actual.
  • En los directorios de inclusión adicionales en las propiedades del proyecto ( Proyecto -> [nombre del proyecto] Propiedades , en C / C ++ | General).
  • En los directorios Incluir de Visual Studio C ++ en HerramientasOpcionesProyectos y solucionesDirectorios VC ++ .
  • En las nuevas versiones de Visual Studio (2015+), la opción anterior está en desuso y una lista de directorios de inclusión predeterminados está disponible en Propiedades del proyectoConfiguraciónDirectorios de VC ++

En su caso, agregue el directorio en el que se encuentra el encabezado a las propiedades del proyecto ( Propiedades del proyectoConfiguraciónC / C ++GeneralDirectorios de inclusión adicionales ).

Rob Prouse
fuente
3
Buena respuesta, pero debo agregar que en Visual Studio 2003, debe mirar "Herramientas | Opciones | Directorios VC ++" no "Herramientas | Opciones | Proyectos y soluciones | Directorios VC ++".
Graf
36
el preprocesador en VS 2010 busca en el directorio actual solo si se usa la sintaxis de inclusión entre comillas (por ejemplo, #include "lo que sea.h"). El uso de corchetes angulares (por ejemplo, #include <lo que
sea.h
5
En Visual Studio 2010 y versiones posteriores, los "directorios estándar de C ++" ya no están en herramientas-> opciones y están en una hoja de propiedades global: blogs.msdn.com/b/vsproject/archive/2009/07/07/…
Mooing Pato
8
Me pregunto que nadie haya dicho todavía el directorio predeterminado. Así que aquí está <root dir of Visual Studio>/VC/include/. Tengo un MSVC en mi PC de trabajo del usuario anterior, pero uso GNU / Linux y no quería iniciar VC solo para satisfacer mi curiosidad de mirar los encabezados de Microsoft®. Por cierto, sobre el tipo de curiosidad que tenía: ¡descubrí que MSDN ni siquiera sabe sus propios nombres de encabezado! Es decir, se refirieron Iphlpapi.h, pero tal archivo no existe, su nombre es más bien iphlpapi.h, ¡ IPHlpApi.hambos están allí! lol
Hi-Angel
17
La opción "VS> Herramientas> Opciones> Proyectos y soluciones> Directorios VC ++" ahora está desactivada.
BG BRUNO
21

En realidad, en mi comunidad de Windows 10 con Visual Studio 2017, la ruta de los encabezados de C ++ es:

  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

El primero contiene C cabeceras estándar ++ tales como <iostream>, <algorithm>. El segundo contiene las cabeceras de edad C tales como <stdio.h>, <string.h>. El número de versión puede ser diferente según su software.

Espero que esto ayude.

linrongbin
fuente
1
Esta es la respuesta más directa a OP. Aunque otras respuestas hablan de otros problemas, esta debería ser la respuesta aceptada.
winux
@linrongbin Estoy revisando los directorios que fueron creados por la última instalación de VS Build Tools. Tienes razón sobre el primero. Pero desmarqué la opción Windows SDK, por lo que efectivamente significa que no tengo encabezados C, lo que a su vez significa que el flujo de trabajo C ++ en BuildTools no es compatible con C.
Hatebit
11

Si el proyecto vino con un archivo de proyecto de Visual Studio, entonces eso ya debería estar configurado para encontrar los encabezados por usted. De lo contrario, tendrá que agregar el directorio de archivos de inclusión a la configuración del proyecto haciendo clic con el botón derecho en el proyecto y seleccionando Propiedades, haciendo clic en "C / C ++" y agregando el directorio que contiene los archivos de inclusión a los "Directorios de inclusión adicionales". cuadro de edición.

Adam Rosenfield
fuente
6

Intenté agregar esto como un comentario a la publicación de Rob Prouse , pero la falta de formato lo hizo ininteligible.

En Visual Studio 2010, el cuadro de diálogo "Herramientas | Opciones | Proyectos y soluciones | Directorios VC ++" informa que "La edición de Directorios VC ++ en Herramientas> Opciones ha quedado obsoleta", proponiendo que utilice el Administrador de propiedades bastante contrario a la intuición.

Si realmente desea actualizar el $ (IncludePath) predeterminado, debe piratear la entrada correspondiente en uno de los archivos XML:

\ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ PlatformToolsets \ v100 \ Microsoft.Cpp.Win32.v100.props

o

\ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ x64 \ PlatformToolsets \ v100 \ Microsoft.Cpp.X64.v100.props

(Probablemente no recomendado por Microsoft).

SteveWilkinson
fuente
6

Parece haber un error en la comunidad de Visual Studio 2015. Para un proyecto de 64 bits, la carpeta de inclusión no se encuentra a menos que esté en la lista Carpetas de inclusión adicionales de configuración de win32 bit .

Markus
fuente
3
¿Tiene un enlace a este error o una referencia a él, por favor?
Preet Sangha
No, lo encontré yo mismo y no lo
informé
5

Existe una pregunta más reciente sobre qué está resolviendo mejor el problema: ¿Cómo funcionan las rutas de inclusión en Visual Studio?

Se está revelando la forma de hacerlo en las versiones más nuevas de VisualStudio

  • en el proyecto actual solamente (ya que la pregunta también se establece aquí) así como
  • para cada nuevo proyecto por defecto

El segundo es lo que explica la respuesta de Steve Wilkinson anterior, lo que es, como él mismo supuso, no lo que recomendaría Microsoft.

Para decirlo brevemente aquí: hágalo, pero hágalo en el directorio de usuarios en

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

en el archivo XML

Microsoft.Cpp.Win32.user.props

y / o

Microsoft.Cpp.x64.user.props

y no en el directorio C: \ archivos de programa, donde se espera que resida el archivo Factory-File de Microsoft sin modificar.

Luego lo hace de la forma en que VisualStudio también lo hace y todo es regular.

Para obtener más información sobre por qué hacerlo de la misma manera, vea mi respuesta allí .

Pablo el Puro
fuente
1
Si solo el título tuviera "C ++" y reconociera el error al buscar rutas de 64 bits en la sección de ruta de 32 bits
Markus