2014-12-16 4 views
0

У меня странная ошибка C1083 (не может файл заголовка). Я читал другие сообщения C1083, но я думаю, что у меня разные:C1083: Не удается открыть файл include: ...: Нет такого файла или каталога?

1) Файл заголовка добавлен в мои свойства проекта в дополнение к дополнительному свойству.

2) Другой класс использует тот же заголовок (тот же проект), и он компилируется. Проблема не возникает, пока я не добавлю свой файл заголовка во второй заголовочный файл.

3) Я использую auto complete/intellesense для создания файла «.. \ include \ myClass.h». Одно из предложений заключалось в том, что я использовал неправильный путь, но все было в одном каталоге. Я все равно попробовал.

Все файлы находятся в одном каталоге и этот каталог включен в дополнение к свойству.

В сущности, часть проекта видит его, а другая часть нет? Я не знаю, чего мне не хватает.

+0

У меня также есть эта проблема. Но в моем случае, возможно, потому, что существует круговая зависимость между заголовком, который я включаю, и включенным заголовком (один из них является шаблоном, который получает тип другого, а другой использует шаблон). Ошибка «фатальная ошибка C1083: не могу открыть файл include:« header.h »: никакого такого файла или каталога«, однако, очень плохой вывод для этого случая ... –

ответ

0

Если целевой «include» каталог добавлен в «дополнение включает» свойство проекта, то вам действительно не нужен путь вообще.

Я имею в виду, имея:

\myFolder\project 
       \project.vcproj 
       \source 
         \myCode.cpp <- compiling this one here? 
       \data 
         \myDb.foo 
       \include   <- this DIR#1 
         \foo1.h 
         \myClass.h <- this FILE#1 
         \foo2.h 
         \lib1 
           \bar.h <- this FILE#2 

если вы добавили DIR # 1 в "дополнительные каталоги включают в себя", а затем:

#include "myClass.h" // to include FILE#1 
#include "lib1\bar.h" // to include FILE#2 

должно быть достаточно.

В случае, если Вы не добавили путь там, следующее должно работать:

#include "include\myClass.h" // to include FILE#1 
#include "include\lib1\bar.h" // to include FILE#2 

Если вы добавили путь и первый не работает, а второй один работает, то вы добавили путь неправильно - убедитесь, что структура файлов/папок действительно такая же, как вы думаете. Кроме того, если вы добавили относительный путь к проекту, попробуйте изменить его на абсолютный.

+0

Я абсолютно уверен, что это правильно. Я проверял, меняя его, весь проект ломается, а не только это маленькое место. При использовании вашего примера myClass.h включен в myCode.cpp, и все прекрасно компилируется. Но когда я когда-то включаю myClass.h в foo2.h, компилятор выплевывает ошибки. – redDesert

+0

@redDesert: Я забыл спросить, как насчет включения lib1 \ bar.h из myCode.cpp? Это работает? должно. – quetzalcoatl

+0

@redDesert: теперь, на ваш комментарий - при включении myClass.h из foo2, заявляет ли ошибка, что заголовочный файл не может быть найден, или есть ли другие ошибки? если первое, попробуйте включить lib1 \ bar.h, если это удастся - что-то действительно испортилось, но теперь мне ничего не приходит в голову. но если это не удается, попробуйте добавить «.». (единичный период) в «add. includes dirs». Это уродливый патч, но может работать. – quetzalcoatl

Смежные вопросы

 Смежные вопросы