退出程序时抛出异常(Ogre3d)

Posted

技术标签:

【中文标题】退出程序时抛出异常(Ogre3d)【英文标题】:Exception thrown when exiting program (Ogre3d) 【发布时间】: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 拒绝安装。 【参考方案1】:

这不是你应该如何初始化和使用 Ogre。很可能缺少初始化工作是导致您崩溃的原因。

要开始使用 ogre,我强烈建议关注 the tutorials 并向其学习

编辑: 可以在此处找到适用于 ogre 的 Visual Studio 项目模板:http://code.google.com/p/ogreappwizards/updates/list 以快速开始。

【讨论】:

我实际上已经尝试了 wiki 中的第一个教程,复制粘贴到一个新项目中(下载演示文件后),正确链接,然后运行该项目。它运行,然后在我退出时给出完全相同的异常。【参考方案2】:

感谢大家对这个问题的帮助。我最终重新安装了 Windows(我尝试卸载 Visual Studio 并重新安装它,但是在卸载 VS 时出现了问题[我按照微软的说明进行操作],它会拒绝再次安装 [安装程序会崩溃])。我希望他们可以轻松卸载 Visual Studio。

我在重新安装 Windows 之前浪费了大约 3 天的时间。我的建议是,如果您有另一台计算机可以继续工作,那么如果发生这种情况,也不要浪费时间。如果您确实找到了解决问题的方法,请告诉我:)

【讨论】:

【参考方案3】:

我最近在 Visual Studio 2010 中设置了 ogre,但它拒绝正常工作,直到我复制了正确的 DLL - 我一直在使用从 Visual Studio 2008 中稍旧版本的 ogre 编译的集合。听起来整个ogre 编译或 DLL 可能已通过 SVN 复制过来,这可能会导致奇怪的问题。

无论如何,希望它有所帮助。

【讨论】:

感谢您的回答 :) 我最终重新安装了 Windows,我无法找到问题的根源,它成功地浪费了 2 天的生产力(嗯,不完全是,但卸载/修复/重新安装需要时间)。如果有人使用任何 SDK 遇到此问题,请节省一些时间并重新安装 Windows。我有一个不错的设置,一切都在服务器上,所以重新安装 Windows 和程序不会超过几个小时。

以上是关于退出程序时抛出异常(Ogre3d)的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 在从网络下载工件时抛出错误.. 异常:Gradle 任务 assembleDebug 失败,退出代码为 1

java写的excel导出时抛出的异常

在继承中重写方法时抛出异常的问题

执行查询时抛出异常

调试 Xamarin C# iOS 应用程序时抛出 Objective_C 异常

Java 异常 重写方法时抛出异常