用 VS2008 重新编译代码,现在它重新启动 XP SP2

Posted

技术标签:

【中文标题】用 VS2008 重新编译代码,现在它重新启动 XP SP2【英文标题】:Recompiled code with VS2008 and now it reboots XP SP2 【发布时间】:2009-08-25 21:52:01 【问题描述】:

这很奇怪,但我从 VS2005 转移到 VS2008(MFC、VC++),现在重新编译的程序会导致 BSOD 或 XP SP2 上的重新启动(在 SP3 及更高版本上工作正常)。它没有到达 InitInstance。

有没有人遇到过这种情况并且知道去哪里解决它?我目前正在修改项目设置,但到目前为止没有成功。

调试和发布的行为方式相同(重新启动)。

提前致谢!

补充:它实际上通过了 CWinApp 构造函数,但是在到达 InitInstance 之前就死掉了。

【问题讨论】:

【参考方案1】:

如果它发生在 InitInstance 之前,我会在 CWinApp 构造函数中放置一个断点,看看它是否被命中。如果不是,那么它很可能是一个 dll 加载问题。

是否有可能您的 dll 之一是用 vs2005 编译然后与 vs2008 链接的?

或者您手动编辑了清单文件并加载了错误的 sxs dll?

【讨论】:

我在构造函数中放入了消息框,它通过了所有的消息框,但从不显示位于 InitInstance 第一行的消息框。我想我的下一步是设置远程调试以查看是否显示任何内容。我没有很多 DLL,也许只有几个我链接到的第三方的,但值得检查(今晚晚些时候我会这样做)。不确定清单文件 - 我不知道 sxs dll 是什么?【参考方案2】:

您可能有某种硬件问题或驱动程序问题导致此问题。检查您的内存以确保它们正确就位,以及风扇 - 可能是 CPU 过热。一般来说,用户模式程序不可能导致蓝屏。

【讨论】:

我实际上并没有在我的测试环境中收到 BSOD,我正在重新启动(至少有一个用户报告了 BSOD)。我已经在 2 台不同的机器(一台虚拟机,一台真实机器)上对其进行了测试,所以它不是硬件。【参考方案3】:

它似乎与清单相关联。在我禁用生成清单并提供我手动创建的清单后,事情又开始正常工作了。

【讨论】:

很高兴能帮到你:) 是的,但它似乎确实更喜欢我自己创建的清单而不是它生成的清单。奇怪 - 你希望它知道它在做什么。 您是否可以将在 vs2005 中创建的清单复制到使用 vs2008 的计算机(即它是否在源代码控制下)。这肯定会引起问题。 是的,我有一个在 VS2005 中手动创建的清单(我需要添加一些部分)到 VS2008。我没有意识到 VS2008 已经在尝试生成并嵌入它自己的清单。

以上是关于用 VS2008 重新编译代码,现在它重新启动 XP SP2的主要内容,如果未能解决你的问题,请参考以下文章

vs2008编辑aspx页面时,经常会session失效,就得重新登录系统,这是为啥?!

用VS2008如何编译.c,C语言文件?

vs 2008 express:注册

VS2012编译的DLL动态库为啥在VS2012上调用正常,在VS2008上使用失败

vs2010如何生成单个项目,每次编译所有的项目都全部重新生成了

vs2008开始设置的用c#环境,现在写c++的代码没有智能提示了,怎么办?