2010-09-24 21 views
14

He estado en esta situación bastantes veces donde visual studio no respeta el Directorios de inclusión adicionales cuando se trata de lib y header source files. Por ejemplo, acabo de descargar el código fuente MyGUI y me aseguré de que los directorios de inclusión fueran correctos. Incluso los puse en caminos absolutos, Visual Studio todavía se quejaba de que no podía encontrar archivos de encabezado específicos.Visual Studio no cumple con los directorios de inclusión

¿Alguien experimentar lo mismo con los proyectos, y si es así, ¿hay una solución a este problema? Cita en bloque

EDIT: My apologies for not being able to explain fully. I know that the library and source files have different include directories. The project that I received had correct directory paths for the Additional Include Directories and Additional Library Directories but Visual Studio still failed to recognize them properly. I can right click and open the header file within Visual Studio but when compiling it still complains it cannot find the required header files. I regularly make projects relying on a framework I myself programmed, so I am quite familiar with how to set up dependencies. This is however the second time this seems to be happening. I don't recall which 3rd party project I was trying to compile last time, but Visual Studio simply refused to believe that the Additional Include Directories paths is where it should look for the header files. I am not sure how to give the complete details of this particular library (MyGUI) but I can point you to the website where you can download it to try and see if it is able to find the header files that are included in the project (if it doesn't compile, that is fine, and it is probably because of additional dependencies, but it should at least be able to find files in the common folder, especially when I put absolute paths in Additional Include Directories)

+2

Nunca he sido (desde la versión 6) incapaz de configurar correctamente Visual Studio para aceptar archivos de cabecera y/o biblioteca. Publique la estructura de directorios de su biblioteca y cómo configura su proyecto en Visual Studio. –

Respuesta

3

He encontrado (tropecé) con la solución (creo). Tiene algo que ver con el límite de caracteres impuesto por el sistema operativo. Aunque el límite debería ser 260, para mí cae en los siguientes 150, see this discussion and links to it. Descargué y descomprimí el archivo en C:\Users\MyUserName\My Documents\Downloads\Downloads From Chrome\MyGui3.0... [y así sucesivamente]. Hace bastante tiempo aprendí a no intentar compilar proyectos en caminos tan largos, pero esta vez se me escapó por completo, ya que VS no me dio una advertencia y me apuntó en la dirección equivocada. De todos modos, cortar y pegar el proyecto en D:\ solucionó el problema. No voy a marcar la respuesta sin embargo hasta que alguien confirme esto.

+0

¿Alguien sabe si VS impone un límite en la longitud de estas rutas para garantizar que, al invocar 'cl.exe', la línea de comandos no sea demasiado larga? –

2

¿Puede usted más detalles sobre esto? Si no recuerdo mal, hay por lo menos dos lugares en Visual Studio donde puede configurar esto:

  1. Per-instalación: Tools/Options/Projects and Solutions/VC++ Directories)
  2. por proyecto: Project/Properties/Configuration Properties/"C/C++"/General/Additional Include Directories

Si va a añadir el incluir directorios por proyecto (n. ° 1), que creo que es usted, y luego tratar de incluir desde otro proyecto, esto obviamente no funcionará. Intente agregarlos en el nivel por instalación y vea si funciona.

Además, esto puede sonar estúpido/simplista, pero asegúrese de que la ruta sea la correcta (es decir, copiar y pegar en la barra de ruta del Explorador y ver si los archivos de encabezado están en esa carpeta).

+0

En realidad, aconsejaría no agregar bibliotecas aleatorias a todo el entorno. Una solución más limpia es simplemente agregar los directorios necesarios para ambos proyectos: no desea realmente que todas y cada una de las bibliotecas permanezcan en su entorno. –

+0

Realmente depende de una serie de factores. Si está hablando de decir, agregando Qt, entonces globalmente sería prudente ya que es probable que lo esté utilizando en muchos proyectos en la misma máquina. – Lee

+0

Consulte la edición en mi pregunta original para aclarar – Samaursa

0

Si por archivos lib se quiere decir archivos de biblioteca (.lib), la ubicación del directorio no se especifica a través de C/C++/General/Additional Include Directories sino a través de Linker/General/Additional Library Directories.

Es lógico si lo piensas bien. Las opciones de C/C++ son todas las opciones de compilación, ajustes relacionados con la compilación de archivos .cpp y .h. Las opciones del enlazador son todas las opciones de enlace, las configuraciones involucradas en la vinculación de los archivos .obj y .lib.

+0

Mis disculpas por no ser capaz de explicarlo por completo. Sé que la biblioteca y los archivos fuente tienen diferentes directorios de inclusión. El proyecto que recibí tenía rutas de directorio correctas para los directorios de inclusión adicional y los directorios de biblioteca adicionales, pero Visual Studio aún no los reconoció correctamente. Puedo hacer clic con el botón derecho y abrir el archivo de encabezado en Visual Studio, pero al compilarlo todavía se queja de que no puede encontrar los archivos de encabezado necesarios. – Samaursa

+0

Lo he visto antes: el clic derecho de Visual Studio abre una inclusión diferente de la que se usa en la compilación. Esto generalmente sucede cuando falla la compilación. Después de una compilación exitosa, esto generalmente no sucede. Buscaría los archivos de inclusión con el mismo nombre en todas las rutas de inclusión, incluso las que no sean la que le proporciona su problema (podría ser una inclusión de una inclusión). También intenta poner la ruta completa en la declaración #include y ver si eso te lleva un poco más lejos. –

22

Esto me pasó una vez. Resultó la inconsistencia de las compilaciones Debug vs Release. Cuando modifiqué una compilación, la otra compilación se estaba compilando. Establezca ambas compilaciones con las mismas carpetas de inclusión y vea si funciona. Buena suerte.

+4

¡También me pasó con la plataforma Win32/x64! –

+0

En realidad, corrija este error dependa del conjunto tanto de la plataforma Win32/x64 como dijo Francesco Dondi, no de las compilaciones Debug vs Release probadas en Visual Studio 2015 – 123iamking

0

Tuve los mismos síntomas en mi proyecto de C++. Navegar desde el encabezado al encabezado funciona bien, pero después de alternar con el archivo fuente de un encabezado (digamos foo.cpp), la navegación a un #include <bar.cpp> en ese archivo fuente falló. Tengo el siguiente error:

File 'bar.cpp' not found in the current source file's directory or in build system paths.

Después de la investigación me di cuenta de que la trayectoria de la estructura del sistema dado en el error por el que no se concede a los caminos incluir del proyecto.En otras palabras: IntelliSense no sabía que el archivo fuente (foo.cpp) era parte del proyecto y, por lo tanto, no utilizó las rutas de inclusión del proyecto para buscar el #include <bar.cpp>.

La solución para mí fue crear un archivo intelliSense.cpp (el nombre del archivo no importa) que es parte del proyecto, pero se excluyó de la compilación. Este archivo contiene una inclusión para cada archivo fuente. por ejemplo:

#include <foo.cpp> 
#include <bar.cpp> 
... 

De esta manera IntelliSense sabe que estos archivos de origen son parte del proyecto, y por lo tanto van a utilizar los caminos de incluir el proyecto para resolver el #includes en esos archivos de origen.

+0

Debe incluir archivos de encabezado, no archivos de código ... – cybermonkey

0

Tuve este problema también. Tal como dijo Sam: este valor de cadena que contiene la ruta de acceso a su infraestructura incluye debe ser el mismo para las configuraciones de Depuración y Liberación. Entonces, la mejor manera es elegir "Configuración: Todas las configuraciones" y "Plataforma: Todas las plataformas" de las dos listas de verificación de contexto en la parte superior de la ventana de propiedades del proyecto antes de escribirlo, o copiar desde la barra de direcciones del explorador de Windows.

Cuestiones relacionadas