5 votes

Code d'erreur Qt Creator -1073741819

Ok, j'ai Qt Creator et j'ai essayé de créer l'application la plus basique, sous Projets->Applications->Qt Gui Applications. Le projet a été créé avec succès. De plus, lorsque je l'ai compilé, il semblait fonctionner correctement.

11:07:38: Running steps for project Test1...
11:07:38: Configuration unchanged, skipping qmake step.
11:07:38: Starting: "C:\MinGW\bin\mingw32-make.exe" 
C:/MinGW/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Users/User/CProjects/Test1-build-Windows7Desktop-Debug'
mingw32-make[1]: Nothing to be done for 'first'.
mingw32-make[1]: Leaving directory 'C:/Users/User/CProjects/Test1-build-Windows7Desktop-Debug'
11:07:39: The process "C:\MinGW\bin\mingw32-make.exe" exited normally.

Cependant, lorsque j'essaie de l'exécuter, j'obtiens ceci :

Starting C:\Users\User\CProjects\Test1-build-Windows7Desktop-Debug\debug\Test1.exe...
The program has unexpectedly finished.
C:\Users\Hunter\User\Test1-build-Windows7Desktop-Debug\debug\Test1.exe exited with code -1073741819

A chaque fois. Je démarre un nouveau projet, je fais ce que je veux, mais j'obtiens cette erreur. Maintenant, j'ai également exécuté en mode débogage. J'obtiens cette erreur :

The inferior stopped because it received a signal from the Operating System.
Signal name: SIGSEGV
Signal meaning: Segmentation fault

Le fichier incriminé est qatomici386.h à la ligne 132, et la fonction spécifique est QBasicAtomicInt::deref qui stipule que

inline bool QBasicAtomicInt::deref()
{
        unsigned char ret;
    asm volatile("lock\n"
                 "decl %0\n"
                 "setne %1"
                 : "=m" (_q_value), "=qm" (ret)
                 : "m" (_q_value)
    -->          : "memory");
    return ret != 0;
}

J'ai fléché la ligne 132. J'utilise une machine 64 bits, mais je crois que j'ai installé un MinGW 32 bits... mais honnêtement, je ne sais même pas si c'est le vrai problème, et encore moins comment le résoudre si c'est le cas. Je suis très novice en matière de C++ et de Qt.

Comme demandé, voici mon code : mainwindow.cpp :

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

main.cpp :

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

Test1.pro :

#-------------------------------------------------
#
# Project created by QtCreator 2012-12-17T23:06:31
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Test1
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Si vous avez besoin de quoi que ce soit d'autre, n'hésitez pas à le demander.

Voici la trace de débogage complète :

0   QBasicAtomicInt::deref  qatomic_i386.h  132 0x402774    
1   QString::~QString   qstring.h   880 0x402805    
2   WinMain@16  qtmain_win.cpp  93  0x401eab    
3   main            0x402e6b    

Mise à jour : j'ai exécuté l'exemple toy clock et cela a bien fonctionné. Cependant, lorsque j'ai exécuté le calculator form mais le résultat est exactement le même. Je remarque que le calculator form se présente sous la forme d'un projet normal : il possède un .pro et les dossiers En-tête, Sources et Formulaires. Les dossiers toy clock quant à lui, n'a qu'un .qmlproject et un dossier qml. Il échoue également au même endroit avec la même trace de retour. Je ne connais pas grand chose à tout cela, mais j'espère que cela aidera à trouver une solution.

3voto

Favil Orbedios Points 182

J'ai eu le même problème, alors que je venais d'installer tout cet environnement.

J'ai cherché, et il semble qu'il y ait un bug sur le bug tracker de Qt à l'adresse : https://bugreports.qt.io/browse/QTCREATORBUG-7653

Extrait de la page :

Il existe plusieurs versions binaires incompatibles de mingw. Vous devez utiliser la même[1] version de mingw pour qt et votre programme. Ce qui signifie soit compiler qt vous-même avec cette >version de mingw, soit utiliser la même que celle utilisée pour compiler les paquets binaires de qt (je ne suis pas sûr mais cela pourrait être une version plus récente que ftp://ftp.qt.nokia.com/misc/MinGW-gcc440_1.zip )

[1] Identique au sens de l'ABI

1voto

em.eh.kay Points 350

En comparant certaines de mes applications Qt (héritées) et celle-ci Tutoriel Qt Je remarque une différence dans l'initialisateur de MainWindow . Il ne s'agit peut-être que d'une convention, mais ces sources montrent que MainWindow héritant directement de la classe Ui, puis un appel direct à setupUi(this); .

Il s'agit donc de réoutiller votre mainwindow.cpp à :

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);
}

Vous n'avez pas inclus mainwindow.h mais la définition de la classe devrait ressembler à

class MainWindow : public QMainWindow, private Ui::MainWindow
{
//...

0voto

thelastworm Points 112

J'ai eu le même problème, j'ai redémarré Windows et le problème a été résolu, c'est vraiment étrange mais ça marche pour moi.

Hoep cette aide !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X