【发布时间】:2010-06-28 16:11:59
【问题描述】:
当我退出程序时,我遇到了一个奇怪的异常。这从今天早上开始,我准备把头发拉出来。一旦我退出程序,Visual Studio 就会给出一个异常并在文件 crt0dat.c 中的第 731 行停止(见附件截图)
我知道这没什么可做的。我尝试了几种不同的方法:
- 不执行任何操作,即完全不初始化 Ogre Core。不会导致崩溃
- 运行程序,除了创建 Ogre root(与 Ogre 本身相关,与我的代码无关)之外的所有内容都注释掉,导致同样的崩溃
- 运行以下基本程序,但仍会导致崩溃。 当我的程序运行完成时,返回 0 后发生崩溃
#include "windows.h"
#include "OgreRoot.h"
/// --------------------------------------------
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
{
Ogre::Root* lRoot = new Ogre::Root();
delete lRoot;
lRoot = NULL;
return 0;
}
/// --------------------------------------------
由于我在 SVN 上拥有所有内容,因此我在笔记本电脑上运行了相同的项目,它运行时没有任何问题,并且退出时也没有任何问题。这让我相信我的视觉工作室在某个地方被破坏了。我卸载了 Visual Studio,然后重新安装它,但问题仍然存在(当 VS 安装它时,它会遍布我的系统。无法包含它。有谁知道完全破坏 Visual Studio 安装的万无一失的方法?)。我的想法不多了,没有重新安装 Windows。我希望这里有人可以提供帮助。
调用栈:
048b0910()
ntdll.dll!775d9901()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!775edc30()
ntdll.dll!775edb7c()
kernel32.dll!76c67363()
> msvcr90d.dll!__crtExitProcess(int status=0) + 0x1b bytes C
msvcr90d.dll!doexit(int code=0, int quick=0, int retcaller=0) + 0x1d1 bytes C
msvcr90d.dll!exit(int code=0) + 0x12 bytes C
OgreFWGame.exe!__tmainCRTStartup() + 0x2a2 bytes C
OgreFWGame.exe!WinMainCRTStartup() + 0xf bytes C
kernel32.dll!76c63677()
ntdll.dll!775d9d42()
ntdll.dll!775d9d15()
崩溃截屏:
link text
【问题讨论】:
-
我最终重新安装了 windows,我无法找到问题的根源,它成功地浪费了 2 天的生产力(嗯,不完全,但卸载/修复/重新安装会占用时间) .如果有人使用任何 SDK 遇到此问题,请节省一些时间并重新安装 Windows。我有一个不错的设置,所有东西都在服务器上,所以重新安装 Windows 和程序不会花费超过几个小时。我刚刚通过重新编译运行程序进行了检查,它没有出现任何问题。
-
你认为在沙盒中安装VS会更容易删除吗?
-
@wrongusername:这是一个有趣的问题。我从来没有尝试过。我自己在安装然后删除它时尝试使用 revo 卸载程序。不工作。之后 Visual Studio 拒绝安装。