如果我写
try {
throw std::exception("Exception");
} catch (std::exception& ex) {
qDebug("Game Over");
}
Run Code Online (Sandbox Code Playgroud)
在我的主要功能(或其他任何地方)内,我的Qt应用程序崩溃了.这种效果已经描述(5年前),异常处理不适用于Windows上的Qt.
原版海报显然是通过自己重新配置和重建Qt SDK(明确启用-exceptions)解决了这个问题,但是我很难相信所有Qt二进制文件都附带异常关闭并且每个人都使用异常必须这样做.
有人能指出我记录的地方,告诉我这是真的还是我在这里做错了什么?
我现在使用的是MSVC2013,Win 7的Qt 5.4.2(从这里下载了qt-opensource-windows-x86-msvc2013_opengl-5.4.2.exe ).
你没有做错任何事。由于 Qt 不使用异常,因此在默认的 Qt 构建中启用它们会产生不必要的开销。因此,在允许禁用异常的平台上,它们实际上会被禁用。
一般来说,你确实需要自己编译Qt。预构建的二进制文件非常适合探索和学生使用,但如果您真的想在产品中使用它,或者您需要非默认配置,则绝对必须使用您需要的标志自行编译它。