所有正式的Qt二进制文件都是使用-no-exceptions构建的吗?

时间:2015-07-02 12:44:16

标签: c++ qt exception

如果我写

try {
    throw std::exception("Exception");
} catch (std::exception& ex) {
    qDebug("Game Over");
}

在我的主要功能(或其他任何地方)内,我的Qt应用程序崩溃了。 这种效应已在Exception handling doesn't work with Qt on Windows中描述(5年前)。

原版海报显然是通过自己重新配置和重建Qt SDK解决了这个问题(明确启用-exceptions),但我很难相信所有Qt二进制文件都附带异常关闭并且每个人都使用异常必须这样做。

有人能指出我记录的地方,告诉我这是真的还是我在这里做错了什么?

我现在在Qt 5.4.2上使用MSVC2013,Win 7(从here下载qt-opensource-windows-x86-msvc2013_opengl-5.4.2.exe)。

1 个答案:

答案 0 :(得分:3)

你没有做错任何事。由于Qt不使用异常,因此在默认的Qt构建中启用它们是不必要的开销。因此,在允许禁用异常的平台上,它们确实会被禁用。

一般来说,你真的需要自己编译Qt。预构建的二进制文件适合于探索和学生使用,但如果您认真考虑在产品中使用它,或者需要非默认配置,则必须使用所需的标记自行编译。