Как исправить.файл pch отсутствует в сборке?

когда я создаю свое решение c++ в Visual Studio, он жалуется, что xxxxx.файл pch отсутствует. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?

вот точная ошибка для полноты:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debugxxxxx.pch': No such file or directory

9 ответов


Примечание: более поздние версии IDE могут использовать "pch", а не" stdafx " в именах по умолчанию для связанных файлов. Возможно, потребуется заменить stdafx pch в приведенных ниже инструкциях. Прошу прощения. Это не моя вина.

  1. Правой Кнопкой Мыши проект в обозревателе решений.
  2. Нажмите кнопку Свойства в нижней части раскрывающегося меню.
  3. в левом верхнем углу страницы свойств, выберите все конфигурации из раскрывающегося списка меню.
  4. откройте дерево C / C++ и выберите предварительно скомпилированные заголовки
  5. Предварительно Скомпилированный Заголовок: Выберите Use (/Yu)
  6. заполните поле предварительно скомпилированный файл заголовка. Стандарт-stdafx.h
  7. Нажмите Кнопку ОК

  8. Если у вас нет stdafx.h в заголовочных файлах поместите его туда. Редактировать его включать все заголовки, которые вы хотите предкомпилированного.

  9. поместите файл с именем stdafx.cpp в проект. Поставить код #include "файл stdafx.ч" В и больше ничего.
  10. щелкните правой кнопкой мыши на файл stdafx.cpp в обозревателе решений. выбрать Properties и все конфигурации снова, как в шаге 4 ...
  11. ... но на этот раз выберите Precompiled Header Create (/Yc). это только привязка к одному файлу stdafx.СРР.
  12. Put #include " stdafx.h " в самом верху всех ваших исходных файлов.

Lucky 13. Скрестите пальцы и нажмите Build.


использование предварительно скомпилированного заголовка (pch)-это двухэтапный процесс.

на первом шаге вы компилируете файл заглушки (в VS200x он обычно называется stdafx.cpp). Этот файл заглушки косвенно включает только заголовки, которые необходимо предварительно скомпилировать. Как правило, один небольшой заголовок (обычно stdafx.h) перечисляет стандартные заголовки, такие как <iostream> и <string>, и это затем включается в файл заглушки. Компиляция этого создает .файл pch.

на Шаге 2 ваш фактический исходный код включает тот же небольшой заголовок на шаге 1 в качестве первого заголовка. Компилятор, когда он встречает этот специальный заголовок, считывает соответствующий .вместо этого файл pch. Это означает, что ему не нужно (повторно)компилировать эти стандартные заголовки каждый раз.

в вашем случае, кажется, Шаг 1 не удается. Это стаб-файл по-прежнему присутствует? В вашем случае это, вероятно, было бы xxxxx.cpp. Это должен быть файл, скомпилированный с помощью /Yc:xxxxx.pch, так как это флаг компилятора, чтобы указать, что это шаг 1 процесса PCH. Если xxxxx.cpp присутствует, и такой файл заглушки, то, вероятно, отсутствует его /Yc: опции компилятора.


исправления:

  1. убедитесь, что у вас есть xxxxx.cpp в проект

  2. Compile xxxxx.cpp С флагом /Yc (создать Предварительно Скомпилированный Заголовок)
    (щелкните правой кнопкой мыши на xxxxx.cpp - > свойства - > предварительно скомпилированные заголовки ->создать)

  3. Compile все остальные файлы С флагом / Yu (использовать Предварительно Скомпилированный Заголовок)
    (правый клик на проекте -> свойства -> предварительно скомпилированные заголовки -> использовать)


  1. щелкните правой кнопкой мыши проект и выберите пункт меню Свойства
  2. goto C / C++ - > предварительно скомпилированные заголовки
  3. Выберите Не Использовать Предварительно Скомпилированные Заголовки

да, его можно устранить с помощью опций /Yc, как указывали другие, но, скорее всего, вам не нужно будет прикасаться к нему, чтобы исправить это. Почему вы получаете эту ошибку, в первую очередь, без изменения каких-либо настроек? Возможно, вы "очистили" проект и попытались скомпилировать один файл cpp. В этом случае вы получите эту ошибку, потому что заголовок precompiler теперь отсутствует. Просто создайте весь проект (даже если безуспешно) , а затем создайте любой файл cpp, и вы не получите этого ошибка.


Если все правильно, но эта ошибка присутствует, ее нужно проверить в следующем разделе ****.файл vcxproj:

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

в моем случае это было неправильное имя конфигурации: только первое слово.


Я знаю, что эта тема очень старая, но я имел дело с этим в VS2015 недавно, и что помогло удалить папки сборки и перестроить его. Это может произойти из-за попытки закрыть программу или программу остановки/замораживания VS во время строительства.


Я искал файл PCH iOS, имеющий ту же проблему, если вы попали сюда, как и я, решение, которое я нашел, - это очистка производных данных; закройте симулятор(Ы), перейдите в Xcode prefs - > locations - > перейдите в путь к файлу производных данных, закройте xCode, удалите файлы в папке производных данных, повторно запустите и приветствия :)


попробуйте построить > чистое решение, затем построить > построить решение. этой работает для меня.