Qt Application segmentation fault with MinGW 4.7.2

2019-02-14 15:26发布

问题:

Using MinGW 4.7.2 every compiled Qt 4 application crashes - even programs that ran before.

  • MinGW: 4.7.2
  • QT: 4.8.3
  • Used Libs:
    • QtCore4.dll
    • QtCored4.dll
    • QtGui4.dll (used if gui)
    • QtGuid4.dll (used if gui)

Simple Program as an example:

#include <QtGui/QApplication>

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

    return app.exec();
}

Crash: Signal received: SIGSEGV (Segmentation fault)

Call Stack:

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:

You will need MinGW 4.4. To use MinGW 4.7.2, you need to compile Qt yourself with it. The crash is due to ABI incompatibilities between the MinGW versions.

See this on how to build Qt:

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

In general, when downloading Qt, pay attention to the MinGW version it's been built with. If you want to use your own MinGW installation, it'll need to be the same version as the one Qt was built with.



标签: c++ qt qt4 mingw