Повышение 1_44 включает не работает - PullRequest
2 голосов
/ 24 августа 2010

Извините за то, что кажется глупым вопросом: но я никогда, никогда не работал с boost, до сегодняшнего вечера, и я обнаружил, что его настройка кажется более сложной в использовании, чем должна быть.

Я хотел поэкспериментировать с этим вечером.Поэтому я скачал zip-файл и распаковал его в каталог здесь:

F: / boost_1_44_0

Затем я создал пустой проект C ++ в Visual Studio 2010 (неиспользуя pch либо).Поэтому все, что я хотел сделать, это включить заголовочный файл.Но даже такая глупость не работает.Сейчас я использую Visual Studio в течение многих лет, хотя на работе мы все еще застряли на версии 2008 (это другая история).Поэтому обычно вы устанавливаете каталог включения, а затем вы можете включать файлы по своему усмотрению, верно?

Поэтому я установил глобальный каталог включения для включения корневого каталога повышения.т.е. Диспетчер свойств -> Моя конфигурация (отладка | win32) -> Microsoft.Cpp.Win32.user -> Общие свойства -> Каталоги C ++ -> Включить каталоги.Там я добавил свой путь к f: /boost_1_44_0.

Я также перешел к свойствам проекта и установил каталог включения C ++, чтобы проект указывал на корень повышения, как в версии 2008.

Затем я добавил глупое объявление include, например:

#include <boost/lambda/lambda.hpp>

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

Ошибка 1 ошибка C1083: Невозможно открыть включаемый файл: 'boost / type_traits / transform_traits.hpp': Нет такого файла или каталога f: \ boost_1_44_0 \ boost \ lambda \ core.hpp 25 1 test_boost

Который, когда я дважды щелкаю по нему, открывается в f: \ boost_1_44_0 \ boost \ lambda \ core.hpp и выводит меня на эту строку:

#include "boost/type_traits/transform_traits.hpp"

Так что я понятия не имею, что происходит.Визуальная студия просто не предоставляет мои глобальные пути включения, которые я установил?Кажется также, что директива include в core.hpp должна использовать угловые скобки, а не кавычки.

Если я что-то не так делаю, что?

РЕДАКТИРОВАТЬ: !!Решено !!

Раньше у меня не было всех распакованных файлов.Я не знаю, что случилось.Поэтому я заново загрузил zip-файл и снова распаковал его.На этот раз, чтобы распаковать zip-файл, потребовалось гораздо больше времени, и он извлек гораздо больше файлов: включая отсутствующие файлы.Проблема решена, мое приложение hello world теперь прекрасно компилируется.

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Поведение компиляторов при поиске файлов заголовков определяется реализацией для вариантов <> и "".

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

Полагаю, глупо было бы задавать вопрос, существует ли на самом деле следующий файл?

f:\boost_1_44_0\boost\type_traits\transform_traits.hpp

Итак, пара следственных заданий:

  • Убедитесь, что f:\boost_1_44_0\boost\type_traits\transform_traits.hpp существует.
  • Попробуйте изменить включение верхнего уровня, чтобы использовать кавычки.
  • Попробуйте изменить включение в f:\boost_1_44_0\boost\lambda\core.hpp, чтобы использовать угловые скобки.
  • Обязательно попробуйте все четыре варианта для последних двух.
  • Является ли f: сетевым диском? Что произойдет, если вы положите все это на c:?

Последний - на тот случай, если Windows делает какие-то махинации под одеялом: -)

2 голосов
/ 24 августа 2010

Хотя это немного излишне, обучение использованию Process Monitor SysInternals со временем окупится Он покажет вам, какие файлы действительно открыты, а какие попытки не увенчались успехом. Посмотрите, откуда Visual Studio пытается прочитать transform_traits.hpp, и вы, вероятно, получите ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...