Предварительно скомпилированные заголовки со смешанным C и C ++ - PullRequest
21 голосов
/ 20 января 2012

Я использую предварительно скомпилированные заголовки в своем проекте на C, но мы интегрируем файл .CPP в проект.

Вот ошибка:

Error   1   fatal error C1853: 'Debug\MuffinFactory.pch' precompiled header
file is from a previous version of the compiler, or the precompiled header is C++
 and you are using it from C (or vice versa)    
c:\users\blake\desktop\projects\muffinfactory\source\main.cpp   1

Нам нужен толькоодин .CPP, скомпилированный в нашем проекте, но нам действительно нужен предварительно скомпилированный заголовок для экономии времени компиляции (Windows.h и более).

Как мне организовать свой проект, чтобы сделать это?

Ответы [ 5 ]

19 голосов
/ 20 января 2012

Так что не используйте предварительно скомпилированные заголовки для этого отдельного файла!

Будучи файлом .cpp, он все равно будет иметь отдельные параметры компиляции.

5 голосов
/ 20 января 2012

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

1 голос
/ 20 января 2012

Попробуйте создать отдельный файл скомпилированного заголовка C ++ (скажем, MuffinFactoryCpp.h, который является копией другого). Посмотрите настройки проекта в разделе «Предварительно скомпилированные заголовки» и используйте этот новый файл заголовка в качестве предварительно скомпилированного заголовка для исходного файла C ++.

0 голосов
/ 04 июня 2019

Ответ Зууума

Not using precompiled headers

Прошу прощения у Зууума за столь вопиющий срыв его ответа, но спустя 7 лет он все еще похоронен как комментарий. Бо Перрсон говорит нам, что делать

Так что не используйте предварительно скомпилированные заголовки для этого файла!
В любом случае у него будут отдельные параметры компиляции.

и Зууум говорит нам, как

Дополнительная информация: выберите файл, который вы не хотите использовать "Precompiled Header" из обозревателя решений
Щелкните правой кнопкой мыши
в разделе предварительно скомпилированных заголовков Выберите «Не использовать предварительно скомпилированный заголовок»
- Zuuum 19 февраля '12 в 18: 34

Я сделал крошечные правки - это не прямые кавычки. Причина моих изменений в том, что вы можете исключить использование файла C или C ++ для использования скомпилированных заголовков для конкретного случая. Бо предполагает C ++, так как это прямой ответ на вопрос. Zuuum принимает C, и это касается меня и моей иллюстрации. Это может быть на практике.

Понятно, но досадно, что расположение опций в меню меняется от одного выпуска Visual Studio к другому, но вот расположение пункта меню в моей текущей Visual Studio (2019).

0 голосов
/ 11 августа 2015

Я только что нашел ошибку здесь и нашел эту ветку.Однако методом проб и ошибок я обнаружил, что проблема заключалась в том, что у меня не все файлы были сохранены в последнее время.Кажется, что Visual Studio немного привередлива к датам сохранения файлов, которые прикреплены вместе.

Я нажимал Ctrl + S для всех исходных файлов, и это решало проблему.

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