使用MinGW 4.7.2每个编译的Qt 4应用程序崩溃 - 甚至是以前运行过的程序.
以简单程序为例:
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv); /* Crash here */
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
崩溃: 收到信号: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);
[...]
Run Code Online (Sandbox Code Playgroud)
你需要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的版本相同.