使用MinGW 4.7.2进行Qt应用程序分段故障

时间:2012-12-19 23:17:02

标签: c++ qt qt4 mingw

使用MinGW 4.7.2每个编译的Qt 4应用程序崩溃 - 甚至是之前运行过的程序。

  • MinGW: 4.7.2
  • QT: 4.8.3
  • 使用过的Libs:
    • QtCore4.dll
    • QtCored4.dll
    • QtGui4.dll (如果是gui使用)
    • QtGuid4.dll (如果是gui使用)

简单程序为例:

#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv); /* Crash here */

    return app.exec();
}

崩溃: 收到的信号:SIGSEGV(分段错误)

致电堆栈:

ZN23QCoreApplicationPrivate27processCommandLineArgumentsEv+68: mov    (%edx,%esi,1),%eax
ZN16QCoreApplication4initEv+88: lea    -0x8(%ebp),%esp
ZN16QCoreApplicationC2ER23QCoreApplicationPrivate+47: add    $0x24,%esp
ZN12QApplicationC1ERiPPci+75: movl   $0x67ef2768,(%ebx)
QApplication app(argc, argv);
[...]

1 个答案:

答案 0 :(得分:5)

您需要MinGW 4.4。要使用MinGW 4.7.2,您需要自己编译Qt。崩溃是由于MinGW版本之间的ABI不兼容。

请参阅有关如何构建Qt的信息:

http://qt-project.org/wiki/Building_Qt_Desktop_for_Windows_with_MinGW

一般情况下,在下载Qt时,请注意它所构建的MinGW版本。如果你想使用你自己的MinGW安装,它需要与Qt构建的版本相同。