Как я устраняю ошибку C2859 при попытке использовать предварительно скомпилированный заголовок с VS2010 (VC100) в режиме отладки?

Я пытаюсь обновить старое решение использовать VS2010 (VC100).

У меня есть он установка так, чтобы stdafx.cpp создал предварительно скомпилированный заголовок stdafx.pch из stdafx.h. Затем все другие .cpp файлы, которые включают stdafx.h, проинструктированы для использования предварительно скомпилированного заголовка.

Эти сообщения помогли мне добраться настолько далеко:

Теперь все в порядке, когда я создаю в режиме выпуска. Однако, когда я пытаюсь создать в режиме отладки, я получаю целую "кучу" ошибочного высказывания:

Ошибка 1 ошибка C2859: [удаленный] \debug\vc100.idb не является idb файлом, который использовался, когда этот предварительно скомпилированный заголовок был создан, воссоздайте предварительно скомпилированный заголовок.

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

Почему я получаю эту ошибку? Другими словами, почему это не использовало этот .idb файл, когда это создало предварительно скомпилированный заголовок?

Я не уверен, какую дополнительную информацию необходимо смочь дать мне, ответ поэтому просто спрашивает, существует ли больше информации, которую я должен предоставить.

10
задан Community 23 May 2017 в 12:17
поделиться

3 ответа

Благодаря коллеге я получил ответ.

Проблема заключалась в том, что в stdafx.cpp для формата отладочной информации было установлено значение «База данных программ» (/ Zi), тогда как для всех других файлов он был установлен в «База данных программ для редактирования и продолжения» (/ ZI).

Изменение их всех на «Базу данных программ для редактирования и продолжения» (/ ZI) и выполнение полной перестройки решило проблему.

Думаю, обновление как-то напортачило.

5
ответ дан 4 December 2019 в 01:29
поделиться

Может быть, ваша сборка релиза настроена на запись файла [удален] \ debug \ vc100.idb вместо [удален] \ release \ vc100.idb? Проверьте настройки проекта для вашей сборки выпуска и убедитесь, что нет таких жестко заданных компонентов пути.

0
ответ дан 4 December 2019 в 01:29
поделиться

Вот как я только что исправил эту ошибку в Visual Studio 2008:

Справочная информация:

  • У меня есть решение, которое содержит два подпроекта.
  • Один проект компилирует .dll;
  • Один проект компилирует .exe, который использовал эту .dll;
  • Проект .exe зависит от проекта .dll;
  • Проблема: у меня были оба проекты, выгружающие свои выходные данные в один и тот же каталог, т.е. и OutPutDirectory, и IntermediateDirectory настроены на запись в общий каталог в корне, «../$(ConfigurationName)».

Причина ошибки:

  • Причина этой ошибки заключалась в том, что при компиляции проекта .dll он создавал предварительно скомпилированный заголовок (* .pch) в том же каталоге , что и каталог .exe , а когда проект .exe был скомпилирован, он сразу же перезаписал предварительно скомпилированный заголовок (* .pch) из проекта .dll.

Исправление:

  • Чтобы исправить это, я изменил "IntermediateDirectory" для обоих подпроектов на "temp", чтобы временные файлы (включая предварительно скомпилированные файлы заголовков) записывались в разные каталоги.
0
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: