10

我正在尝试升级旧解决方案以使用 VS2010 (VC100)。

我进行了设置,以便 stdafx.cpp 将从 stdafx.h 创建一个预编译的头文件 stdafx.pch。然后指示包含 stdafx.h 的所有其他 .cpp 文件使用预编译头文件。

这些帖子帮助我走到了这一步:

现在,当我在发布模式下构建时,一切都很好。但是,当我尝试在调试模式下构建时,我收到一大堆错误:

Error 1 error C2859: [removed]\debug\vc100.idb 不是创建此预编译头时使用的 idb 文件,重新创建预编译头。

我相信这个 .idb 文件是 Visual Studio 创建的中间调试文件。

为什么我会收到此错误?换句话说,为什么它在创建预编译头文件时不使用这个 .idb 文件?

我不确定您需要什么进一步的信息才能给我答案,所以请问我是否需要提供更多信息。

4

5 回答 5

5

感谢一位同事,我得到了答案。

问题是 stdafx.cpp 将调试信息格式设置为程序数据库 (/Zi),而所有其他文件都将其设置为程序数据库以进行编辑和继续 (/ZI)。

将它们全部更改为 Program Database for Edit and Continue (/ZI) 并进行完全重建解决了该问题。

我想升级以某种方式搞砸了。

于 2010-07-01T22:29:47.977 回答
4

在编译与项目的实际输出文件不同的项目时,我在 VS2005 中遇到了这个错误(即$(ProjectName)设置Linker > Output File默认值,$(OutDir)\$(ProjectName).exe而是设置为其他值,例如$(OutDir)\$(ProjectName)-custom_postfix.exe

在这种情况下,显然只有在进行 Rebuild-Project-Only 时,vc80.pdb似乎被错误地查找了。

帮助我的是另外设置C/C++ > Output Files > Progam Database File Name$(IntDir)\$(TargetName).pdb. (而不是默认值vc80.pdb

于 2016-06-07T09:38:49.157 回答
1

在 stdafx.cpp 的属性页面中为调试信息格式选择禁用,然后返回并选择从父级继承为我工作。

于 2014-06-04T16:54:03.877 回答
0

也许您的发布版本配置为写入文件 [removed]\debug\vc100.idb 而不是 [removed]\release\vc100.idb?检查发布版本的项目设置,并确保没有像这样的硬编码路径组件。

于 2010-07-01T07:09:12.073 回答
0

这是我刚刚在 Visual Studio 2008 上修复此错误的方法:

背景:

  • 我有一个包含两个子项目的解决方案。
  • 一个项目编译.dll;
  • 一个项目编译使用这个 .dll 的 .exe;
  • .exe项目依赖于.dll项目;
  • 问题:我让两个项目将它们的输出转储到同一个目录中,即“OutPutDirectory”和“IntermediateDirectory”都设置为写入根目录中的公共目录“../$(ConfigurationName)”。

错误原因:

  • 出现这个错误的原因是.dll项目在编译时,在.exe目录下创建了预编译头(*.pch),在.exe项目编译时,及时覆盖了预编译(*.pch) 来自 .dll 项目。

修复:

  • 为了解决这个问题,我将两个子项目的“IntermediateDirectory”更改为“temp”,以便将临时文件(包括预编译的头文件)写入不同的目录。
于 2010-07-05T15:22:39.753 回答