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

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

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

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

ПРИМЕЧАНИЕ. Более поздние версии IDE могут использовать «pch», а не «stdafx» в именах по умолчанию для связанных файлов. Может потребоваться заменить pch для stdafx в приведенных ниже инструкциях. Я извиняюсь. Это не моя вина.

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

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

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

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

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

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

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

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

Fix:

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

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

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

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

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

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

   

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

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

Я искал файл PCH iOS, имеющий такую ​​же проблему, если вы тоже здесь, как и я, решение, которое я нашел, – это очистка полученных данных; Закройте Simulator (ы), перейдите в xCode prefs -> location -> перейдите к пути производного файла данных, закройте xCode, удалите файлы в папке с производными данными, перезапустите и ура 🙂

Попробуйте Build> Clean Solution, а затем Build> Build Solution. Это работает для меня.

  • Автоматическое ведение версий в Visual Studio 2017 (.NET Core)
  • Ориентация как 32-битной, так и 64-битной с Visual Studio в том же решении / проекте
  • Как включить функцию C # 6.0 в Visual Studio 2013?
  • Не удалось инициализировать систему конфигурации
  • Приложение не удалось запустить, поскольку MSVCP100D.dll не был найден, переустановка приложения может работать
  • Как получить список устройств видеозахвата (веб-камер) на windowsх? (C ++)
  • Преобразование CString в const char *
  • Где я могу получить VB6 IDE
  • Ориентация .NET Framework 4.5 с помощью Visual Studio 2010
  • Сделать ListView.ScrollIntoView Прокручивать элемент в центр ListView (C #)
  • Как вы находите все реализации интерфейса?
  • Давайте будем гением компьютера.