4

MinGW 4.7.2 を使用すると、コンパイルされたすべての Qt 4 アプリケーションがクラッシュします。以前に実行されたプログラムも含まれます。

  • MinGW: 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 に答える