当我尝试在 Qt 中使用异常时,应用程序在任何 throw 语句上立即崩溃,忽略任何 catch(...)
-条款。这是导致崩溃的最少代码:
#include <QString>
int main ( ) {
try {
throw 1;
} catch (...) {
QString a;
}
}
没有 QString
即使包含库,它也能正常工作。
我得到的异常代码是
40000015
和偏移量:
0000bb3f
我将 QtCreator 2.7.2 与 Qt 5.1.0 和 mingw 4.8(QtCreator 附带的版本)一起使用。 我使用 Windows 8 进行构建。
在网络上进行一些研究后,我尝试添加 CONFIG+=exceptions
标记到 *.pro 文件,但仍然崩溃。
当我读到 Qt 可以毫无异常(exception)地构建时(不管那是什么意思),我检查了默认值,因为我使用的是 QtCreator 附带的预编译版本;这个应该包括异常(exception)情况。
我在预编译器之后检查了临时代码,预编译器没有为 main 函数更改任何内容。
当我尝试调试代码时,我注意到它在 throw 语句之后没有执行任何行,它确实在那里崩溃了。
我仍然是 Qt 的初学者;这是这个构建的Qt的问题吗?我应该买一个新的吗?还是我错过了一些我可以更改以使其正常工作的配置?
编辑:在 Frank Osterfeld 要求我之后,我尝试了其他几个类(class)。以下是我的发现:
- 按预期工作:
-
std::string
-
QPoint
-
QChar
-
QDate
-
QMessageLogger
-
- 崩溃:
-
QString
-
QByteArray
-
QDir
-
QException
-
QFile
-
QRegularExpression
-
QSet<int>
-
QTimer
-
最佳答案
Qt 应用程序在任何 throw 语句上立即崩溃 - 我发现当应用程序编译时使用标志 -static
时会发生这种情况。
QMAKE_LFLAGS *= -static
环境:Qt 5.5.1,mingw 32 位运行时,Windows 8。
关于c++ - 使用 Qt5 的 throw 语句即时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20029895/