Ошибка C1854: не может перезаписывать информацию, сформированную во время создания предварительно скомпилированного заголовка в объектном файле

foo.cpp(33918) : fatal error C1854: cannot overwrite information formed 
during creation of the precompiled header in object file: 'c:\somepath\foo.obj'

Консультирование MSDN по этому поводу дает мне следующую информацию:

Вы указали параметр /Yu (использовать предварительно скомпилированный заголовок) после указания параметра /Yc (создать предварительно скомпилированный заголовок) для того же файла. Некоторые объявления (например, объявления, включающие __declspec dllexport) делают это недействительным.

В этом случае мы используем dllexport и предварительно скомпилированные заголовки. Кто-нибудь сталкивался с этим раньше и знает об обходном пути? Любой вклад, чтобы пролить свет на эту проблему, высоко ценится.

Спасибо

Ответы

Ответ 2

У меня тоже была эта проблема.

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

Ответ 3

Мое решение состояло в том, чтобы тщательно перепроверить все предварительно скомпилированные параметры заголовка не только в проекте .exe, но также во всех проектах DLL и заново создать все заголовки. После этого ошибка исчезла в компиляции .exe.