Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 所有正式的Qt二进制文件都是在没有例外的情况下生成的吗?_C++_Qt_Exception - Fatal编程技术网

C++ 所有正式的Qt二进制文件都是在没有例外的情况下生成的吗?

C++ 所有正式的Qt二进制文件都是在没有例外的情况下生成的吗?,c++,qt,exception,C++,Qt,Exception,如果我写 try { throw std::exception("Exception"); } catch (std::exception& ex) { qDebug("Game Over"); } 在我的主函数内部(或其他任何地方),我的Qt应用程序崩溃。 这一效应(5年前)已在中描述 最初的海报通过自己重新配置和重建QtSDK(显式启用-exceptions)显然解决了这个问题,但我很难相信所有Qt二进制文件都是在异常关闭的情况下发布的,并且每个使用异常的人都必须这

如果我写

try {
    throw std::exception("Exception");
} catch (std::exception& ex) {
    qDebug("Game Over");
}
在我的主函数内部(或其他任何地方),我的Qt应用程序崩溃。 这一效应(5年前)已在中描述

最初的海报通过自己重新配置和重建QtSDK(显式启用
-exceptions
)显然解决了这个问题,但我很难相信所有Qt二进制文件都是在异常关闭的情况下发布的,并且每个使用异常的人都必须这样做

有谁能告诉我这是记录在案的地方,告诉我这到底是真的还是我做错了什么


我现在使用的是MSVC2013 Win 7的Qt 5.4.2(从下载的Qt-opensource-windows-x86-MSVC2013\u opengl-5.4.2.exe)

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


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

这甚至不应该编译,
std::exception
没有接受
const char*
参数的构造函数
std::exception
仅用作acutal异常的基类。例如,尝试抛出std::runtime_错误(“异常”)相反。@BaummitAugen我明白了。但是我没有得到任何构建错误。这告诉我什么?此外,我需要捕捉的不是这个特定的异常,而是第三方库抛出的异常。你知道吗?“这说明了什么?”显然,你的标准库实现提供了非标准特性。“你知道吗?”不,我不能回答这个问题,我从来没用过QT。以上只是OT的一句话,并非回答。这就是为什么我把它作为评论而不是答案发布的原因。:)@BaummitAugen这是一个MSVC扩展。但这不应该在他们的二进制版本中明确指出吗?是否有一个站点描述了用于已发布二进制文件的编译器和配置选项?@virt可能已发布二进制文件附带了一个配置点文件?我不记得它们是否有,但一定要检查是否有名称以点开头的文件。如果有,其中一个应该是传递给原始构建中使用的
configure
的保留配置。二进制版本有点用词不当,因为产品是源存储库,而不是二进制文件。