c++ - 是否所有官方 Qt 二进制文件都使用 -no-exceptions 构建?

标签 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)。

最佳答案

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

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

关于c++ - 是否所有官方 Qt 二进制文件都使用 -no-exceptions 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185046/

相关文章:

c++ - 在它自己的指针上模板化一个类?

c++ - QT自定义鼠标事件和拖动模式

windows - Windows下如何在Qt Creator中调试?

python - Google App Engine 中的全局异常处理

java - 在我的测试中遇到 MalformedURLException 但以前从未发生过

c++ - 为什么 std::find 不适用于 std::shared_ptr

c++ - 简单迭代器:std::count 错误

c++ - 在 C++ 中使用 cin 时逗号有什么作用

c++ - Qt SQL : how to differentiate between a double and an int?

c++ - Bad_alloc 问题