Подтвердить что ты не робот

Получение "Невозможно открыть файл include: atlbase.h": нет такого файла или каталога "

Я меняю компьютеры (между двумя ноутбуками Windows 8.1) и только что загрузил проект, над которым я работаю из TFS. На одной машине она компилируется, с другой - нет и дает первую ошибку

error C1083: Cannot open include file: 'atlbase.h': No such file or directory

На обоих ноутбуках я запускаю Visual Studio Ultimate 2013. На первом ноутбуке я проверил, где он собирает atlbase.h, и он находится в C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include, то есть из каталога установки Visual Studio 2012. На новом компьютере у меня нет Visual Studio 2012, поэтому каталог C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include не существует.

Другие люди имеют схожие проблемы (например, вопрос Рамилола), потому что они используют Visual Studio Express. Я использую Ultimate.

Это может быть проблема переменных окружения (как предложенная raj raj), но мои пути каталога include в VC++ Directories являются $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath) по мере необходимости.

Мой общий вопрос: "Как я могу это исправить?" но мне также было бы интересно узнать, как я проверяю и устанавливаю значение $(VCInstallDir), поскольку C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include имеет atlbase.h в (поэтому я смущен тем, почему он не поднят).

========== РЕДАКТИРОВАНИЕ 1: Переписка ==========

Позвольте мне еще раз задать этот вопрос.

Я загрузил проект Visual Studio 2013 на новый ноутбук для сборки из TFS. Он не будет строить и дает ошибки, такие как error C1083: Cannot open include file: 'atlbase.h': No such file or directory. Файл atlbase.h присутствует на новом компьютере в каталоге C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include.

В моих свойствах проекта мои пути каталога include под VC++ Directories равны $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)

Как проверить, установлены ли эти макросы, и если они не там, где atlbase.h (т.е. C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include), как это исправить?

========== РЕДАКТИРОВАТЬ 2: Добавлены распространяемые Microsoft Visual С++ ==========

Отвечаем jp2code ответ на машину, которая работает, и тот, у которого нет аналогичного массива Microsoft Visual С++ Redistributables, установленного в виде следующих снимков экрана (рабочая машина слева):

MSVC++RedistScreenshot

========== EDIT 3: Переменные среды ==========

В его ответ pje объясняет, как искать переменные среды. %VCInstallDir% правильно установлен на C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ Но если я нажму правой кнопкой мыши на строке #include <atlbase.h>, я получаю эту ошибку, которая предполагает, что, несмотря на правильность %VCInstallDir%, это не то место, где смотрит VS:

open file error screenshot

========== РЕДАКТИРОВАНИЕ 4: Настройка инструментария платформы ==========

Другая возможность - это настройка проекта Configuration Properties | General | Platform Toolset, предложенная мануэлем в комментариях и Майкл Берр в его ответе. Для проекта установлено значение Visual Studio 2012 (v110), но единственная другая опция, указанная в раскрывающемся списке, - v110_wp80, которая при выборе становится Windows Phone 8.0 (v110). Если я отредактирую файл .vcxproj в блокноте и снова открою проект в Visual Studio Ultimate 2013, на странице свойств теперь отображается набор инструментов платформы как Visual Studio 2013 (v120) (not installed).

Если я запустил новый проект С++ Windows Store, я могу без проблем установить набор инструментов для платформы Visual Studio 2013 (v120), на самом деле это единственный параметр, указанный в раскрывающемся списке. (N.B. Новый проект имеет Target Platform Version, установленный в "Windows 8.1", и он неактивен, поэтому я не могу его изменить, в то время как проект с ошибкой установлен на Windows 8.)

========== РЕДАКТИРОВАТЬ 5: Весь файл настроек проекта ==========

В комментариях Michael говорится, что "возможно, может быть полезно опубликовать .vcxproj где-нибудь (например, как gistub github)". Я разместил его здесь.

========== EDIT 6: Удаление и переустановка Visual Studio 2013 Ultimate ===========

Не действует, повторяется одна и та же ошибка.

4b9b3361

Ответ 1

На новом компьютере у меня нет установленной версии Visual Studio 2012

Ну, не смотрите дальше, что ваша проблема. Ваш проект нацелен на набор инструментов VS2012 для создания проекта Store, который выполняется в Windows 8.0. Вы все еще можете открыть его в VS2013, но его можно создать, только если у вас установлен VS2012. Другими словами, на вашем компьютере должен быть установлен набор инструментов v110. Вы этого не сделаете.

Короче говоря, от установки VS2012, вам нужно будет переназначить до 8.1, чтобы получить его для сборки с помощью набора инструментов VS2013 (v120). Щелкните правой кнопкой мыши Solution node в окне Solution Explorer и выберите "Retarget Windows Store projects to Windows 8.1".

Подумайте немного об этом ноутбуке, он слишком много помнит о VS2012. Похоже, он когда-то был установлен, но он не был удален правильно.

Ответ 2

Если вы хотите увидеть значение $(VCInstallDir) или любой другой макрос Visual Studio, откройте командную строку разработчика для VS2013 (это должно было быть установлено с установкой VS 2013). В приглашении введите: echo %VCInstallDir%. Это напечатает текущее значение макроса $(VCInstallDir). Если вы хотите изменить это в другой каталог, введите set VCInstallDir=<directory path>, где <directory path> - это путь к вашему желаемому каталогу (предположительно C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include в вашем случае).

Надеюсь, это поможет, ура!

------ редактировать -------
В качестве побочного примечания возможно, что эти макросы были импортированы с проектом 2012 года, который вы пытались загрузить и скомпилировать с 2013 года. Если окажется, что это был ваш макрос $(VCInstallDir), это было бы неправильно..

Ответ 3

Убедитесь, что в настройке проекта "Свойства конфигурации: общий |" ):

Visual Studio 2013 (v12)

а не что-то вроде "Visual Studio 2012 (v110)

Ответ 4

Возможное решение

таким образом вы точно узнаете, где Visual Studio ищет atlbase.h. Монитор процесса покажет вам неудачные попытки открытия файла.

На этом этапе вы сможете решить проблему с помощью

  • сделать символические ссылки (беспорядочно)
  • исправить пути каталога include (лучше)

Обновление Вот как вы фильтруете операции с файлами:

filter settings

Не забудьте нажать "Добавить" после настройки параметров фильтра.

Ответ 5

Убедитесь, что обе машины имеют одинаковые версии С++ Redistributable.

Это стоит сделать, и будет легко проверить.

screenshot