ошибка C1854: невозможно перезаписать информацию, созданную при создании предварительно скомпилированного заголовка в объектном файле - PullRequest
18 голосов
/ 03 июня 2009
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 и предварительно скомпилированные заголовки. Кто-нибудь сталкивался с этим раньше и знает какой-нибудь обходной путь? Любой вклад, чтобы пролить свет на эту проблему, очень ценится.

Спасибо

Ответы [ 3 ]

34 голосов
/ 04 июня 2009

Я думаю, что вы можете найти ответ здесь: http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/b3aa10fa-141b-4a03-934c-7e463f92b2a5/

По сути, вам нужно установить для файла stdafx.cpp значение «Создать предварительно скомпилированные заголовки», а для всех остальных файлов .cpp - «Использовать предварительно скомпилированные заголовки»

1 голос
/ 28 декабря 2010

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

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

0 голосов
/ 15 января 2019

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

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