【问题标题】:Fixing MSVC Compiler Error C1074: Illegal extension修复 MSVC 编译器错误 C1074:非法扩展
【发布时间】:2012-08-15 02:26:24
【问题描述】:

在 Windows 7 SP1(64 位)下使用 Visual Studio 2003 Professional,从命令行编译,我得到一个致命错误 C1074:IDB is illegal extension for PDB file。关于这个错误的文档是sparse 轻描淡写。令人难以置信的奇怪之处在于,在同一台计算机上但在不同帐户下使用相同的构建脚本不会产生此错误。

我的第一个猜测是环境变量中的某些东西导致了这个冲突,但是为两个帐户在它们之间做一个差异,并将 PATH 和 INCLUDE 修改为相同并不能修复错误。

有没有人能解决这个错误,或者知道是什么真正触发了它?没有任何文件是用任何类型的/Z 开关编译的,据我所知,实际上不应该生成任何PDB 文件(并且在成功构建时,没有IDBPDB生成的文件我可以看到)。

【问题讨论】:

  • 使用 /verbosity:detailed 或 :diagnostic 在命令行上构建,并从错误中逆向找出“IDB”的来源。
  • 帐号是指windows用户帐号吗?
  • @RobertoWilko 是的,一个单独的 Windows 用户帐户。

标签: c visual-studio visual-c++ compiler-errors


【解决方案1】:

我在使用 Windows 7 x64 和 Visual Studio 2005 Pro (SP1) 上的解决方案时遇到了同样的问题。

症状

我正在使用 Visual Assist X(当前构建 2007)。因此,在我的情况下,我需要做的就是通过将 feacp.dl 内的 feacp.dl 重命名为其他名称来禁用 IntelliSense。这修复了启动时的崩溃(可能与 OP 遇到的问题无关)。

在那之后Debug 配置给了我很多

fatal error C1033: cannot open program database ''

错误,cl.exe 编译的每个文件一个。

我得到了Release 配置

fatal error C1074: 'IDB' is illegal extension for PDB file: <filename>

即OP 询问的那个。

解决方案

我或多或少偶然发现了解决方案elsewhere,报告于 VS 2003。从某种意义上说,它与Luke's answer 正好相反。

致命错误 C1074

如果 Windows 7 机器有 Windows XP 兼容模式已打开。要解决该错误,请转动 关闭 Windows XP 兼容模式并重新编译解决方案。

如果您有其他问题,请查看 MSDN 论坛以获得更多帮助。它的 不是来源,它听起来更像是您使用 VS 的设置。我从来没有 之前遇到过这个问题,所以帮不上什么忙。

这促使我检查devenv.exe 的设置(在我的情况下是C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE)。它看起来像这样:

在我的例子中,它被设置为与 Windows 2003 Server 兼容,如上面的屏幕截图所示。 但是,必须关闭兼容性!(未选中复选框)

此外,请确保通过单击第二个突出显示的按钮检查并更正所有用户的设置(如果您还没有运行特权,则会显示 UAC 提示)。

这解决了我的问题,我可以避免一直运行 VS 2005 Pro 提升。

【讨论】:

    【解决方案2】:

    根据我在 MSDN 上收集的关于类似但不完全相同的问题的信息:

    由于它编译时除了用户帐户之外没有其他更改,我相信它可能与用户帐户权限有关。检查并查看 VS 设置和 Windows 用户设置中的用户权限之间的差异。

    我会尝试的第一件事是关闭 VS,使用 WON 的帐户以Run As Administrator 重新打开'T 编译并看看会发生什么。

    【讨论】:

    • 是的,情况似乎正是如此……令人沮丧。感谢您的回答。
    • 在奖励赏金之前必须经过 24 小时的持续时间。
    【解决方案3】:

    在尝试分享我的一些麻烦的解决方案,并希望将它们保留给其他人,我在尝试在 Win8-x64 机器中编译 VS2005/SP1 中的旧解决方案时遇到了同样的问题。 无论我尝试做什么,它总是停止抱怨非法 IDB 扩展...

    另一方面,同样的解决方案在我之前的 Win7-x64 机器中完美编译,当运行“提升”时。

    经过一番挣扎,我发现我必须使用 Win8“程序兼容性助手(或英文版中的任何名称 - 我的操作系统使用不同的语言) 并告诉它在 Win7 升级环境中运行 VS2005。之后,晦涩难懂的“IDB 是非法的”错误立刻消失了!

    希望这会对某人有所帮助 =)

    【讨论】:

    • 解决方法和修复之间存在差异。感谢您的回答,但是UAC每次都会提示。不会让事情变得更好。
    • 当然有区别:我所做的是在我的 Win8 系统上尝试的一种解决方法,在该系统中我无法再编译,而不是针对所有可能的情况进行修复。但是在我这样做之后,我能够再次编译我的项目......所以它确实让事情变得更好:)
    猜你喜欢
    • 2023-03-07
    • 2010-10-18
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2017-10-17
    • 2021-11-02
    相关资源
    最近更新 更多