2012-12-19 3 views
4

MinGW 4.7.2 사용 모든 컴파일 된 Qt 4 응용 프로그램이 충돌합니다. 이전에 실행 한 프로그램도 충돌합니다.Qt MinGW 4.7.2의 응용 프로그램 세분화 오류

  • 는 MinGW : 4.7.2
  • QT : 4.8.3
  • 은 libs와 사용 :
    • QtCore4.dll에게
    • QtCored4.dll
    • QtGui4.dll을 (gui의 경우 사용)
    • 신호가 수신 :

      #include <QtGui/QApplication> 
      
      int main(int argc, char *argv[]) 
      { 
          QApplication app(argc, argv); /* Crash here */ 
      
          return app.exec(); 
      } 
      

      충돌 : SIGSEGV (분할 이상)

      예로

간단한 프로그램 (GUI 경우 사용됨) 6,

  • QtGuid4.dll

    호출 스택 :

    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); 
    [...] 
    
  • +0

    아직'4.7.2 '을 시도하지는 않았지만,'QApplication'의 서명이 잘못되었습니다. https://qt-project.org/doc/qt-4.8/qapplication.html – user1797612

    +0

    @ user1797612 어떻게 잘못 됐는지 보지 못합니다. 그 예에서와 같습니다. – gertvdijk

    +0

    argc와 argv는 포인터이고 포인터는 ... &'와'**' – user1797612

    답변

    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가 빌드 된 버전과 동일한 버전이어야합니다.