4

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

  • 明威: 4.7.2
  • QT: 4.8.3
  • 使用的库:
    • 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);
[...]
4

1 回答 1

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 时使用的版本相同。

于 2012-12-19T23:29:26.797 回答