2013-12-20 5 views
0

Я получаю следующее сообщение об ошибке:Не удается открыть файл включать ошибку, но смог найти файл

"fatal error C1083: Cannot open include file" 

для одного из моих файлов заголовков, являющихся #included в stdafx.h. Я установил пути включения и библиотеки в зависимости от проекта, попытался включить их в дополнительный раздел include. Кроме того, когда я нажимаю правой кнопкой мыши

#include <BCGCBProInc.h> 

он может открыть файл и показать его мне. Таким образом, он может найти и открыть файл, но вместо этого дает мне ошибку. Я использую VS2012 в Windows 7, и заголовок находится в другом месте, чем проект.

Что я делаю неправильно/не делаю правильно?

+0

Какой компилятор/платформы? – Sean

+0

@Sean: Я использую VS2012, поэтому любой компилятор C++ MFC, который использует Джонатан: Я не понимаю, что вы говорите – Katianie

+0

Это также может быть проблема с пути. Я имею в виду, что OP может включать в себя другой заголовок, который не входит в систему, включая пути. – drescherjm

ответ

0

То, что я должен был сделать, чтобы получить его для компиляции было изменение

#include "BCGCBProInc.h" 

к этому

#include "C:\Program Files (x86)\BCGSoft\BCGControlBar Professional Evaluation\BCGCBPro\BCGCBProInc.h" 

Я не уверен, почему, потому что я включил путь в VC++ Directories. Когда я просматриваю путь, который он меняет (x86) на% 29x86% 29, это то, что я пытаюсь направить, но это не так, потому что я вручную изменил его на (x86).

Мой план, когда я в конечном итоге получить то, что мне нужно сделать, чтобы получить, я приведу эти библиотеки и включает в проект на местном уровне и сделать пути относительно

+2

'% 28x86% 29' не должно быть проблемой для VC. – alk

+0

Я сделал мой Ответ, потому что это сработало, чтобы заставить его скомпилировать. Ответы выше очень полезны и важны для того, чтобы заставить его работать. – Katianie

2

1.

#include <BCGCBProInc.h> 

не то же самое, как

2.

#include "BCGCBProInc.h" 

Различные поисковые тракты применимы к обоим вариантам включения файла.

В трактах посмотрели при использовании варианта 1. являются те, которые определены как поиск по умолчанию тракты как

  • /usr/include для IXish систем
  • $(VCInstallDir)include также называют VC++ Directories для VC

The трактов, используемых при использовании 2. добавляются через опцию -I (/I для VC).

+0

Это помогает, но я пробовал это и по-прежнему ту же ошибку – Katianie

+1

Я стараюсь всегда это делать, но Visual Studio, похоже, не заботится. По крайней мере, до VS2012. – drescherjm

+0

Всегда делать что? @drescherjm – alk

1

В Visual Studio, щелкните правой кнопкой мыши проект и выберите Свойства , В левой панели выберите опцию VC++ Directories, а затем просмотрите каталоги Include Directories и Library в правой панели. Убедитесь, что они используют относительные пути, а не абсолютные пути. Если они должны быть абсолютными путями, то каждая машина, на которой выполняется этот проект, должна иметь тот же самый путь.Абсолютные пути выглядеть следующим образом:

D:/Development/MyProject/includes 

Относительные пути можно сделать с помощью $ (ProjectDir), чтобы сделать его по отношению к проекту, или $ (SolutionDir), чтобы сделать его по отношению к решению (если он отличается от проекта), и будет выглядеть примерно так:

$(ProjectDir)../includes 

или

$(SolutionDir)includes 
+0

Да, это то, что я в конечном итоге сделаю, но пока я не хочу копировать все. h файлов и libs в папку проекта, пока у меня не будет того, что я хочу делать. – Katianie

+1

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

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