Ошибка 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 и предварительно скомпилированные заголовки. Кто-нибудь сталкивался с этим раньше и знает об обходном пути? Любой вклад, чтобы пролить свет на эту проблему, высоко ценится.
Спасибо
Ответы
Ответ 1
Я думаю, вы можете найти ответ здесь: http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/b3aa10fa-141b-4a03-934c-7e463f92b2a5/
В принципе, вам нужно установить файл stdafx.cpp в "Create Precompiled Headers" и все другие .cpp файлы в "Использовать предварительно скомпилированные заголовки"
Ответ 2
У меня тоже была эта проблема.
Убедитесь, что выходной файл заголовка прекомпилятора установлен в нужное место. На самом деле шахта была выведена в нужное место, но были проблемы с ее чтением только потому, что внутри был немного артефакт.
Ответ 3
Мое решение состояло в том, чтобы тщательно перепроверить все предварительно скомпилированные параметры заголовка не только в проекте .exe, но также во всех проектах DLL и заново создать все заголовки. После этого ошибка исчезла в компиляции .exe.