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

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

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

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

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

Ответ 1

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

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

  • Поместите файл с именем stdafx.cpp в свой проект. Поместите #include "stdafx.h" наверху, и ничего больше.
  • Щелкните правой кнопкой мыши по stdafx.cpp в обозревателе решений. Выберите Свойства и Все конфигурации снова, как на шаге 4...
  • ... но на этот раз выберите Precompiled Header Создать (/Yc). Это будет только привязать к одному файлу stdafx.cpp.
  • Поместите #include "stdafx.h" в самый верх всех исходных файлов.

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

Ответ 2

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

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

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

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

Ответ 3

Fix:

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

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

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

Ответ 4

  • Щелкните правой кнопкой мыши по проекту и выберите пункт меню свойств
  • goto C/С++ → Предварительно скомпилированные заголовки
  • Выберите "Не использовать предварительно скомпилированные заголовки"

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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