Qt Creator错误代码-1073741819

时间:2012-12-18 19:26:21

标签: c++ qt mingw qt-creator

好的,Qt Creator也是如此,我尝试在Projects-> Applications-> Qt Gui Applications下创建最基本的应用程序。该项目已成功创建。此外,当我编译它时,它似乎工作正常。

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.

然而,当我尝试运行它时,我明白了:

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

每一次。我开始一个新项目,我做任何事情,但我得到了那个错误。现在,我也在调试模式下运行。我收到这个错误:

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

第132行的违规文件为qatomici386.h,具体功能为QBasicAtomicInt::deref,其中说明:

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;
}

我已经沿着132号线行驶了。 我正在运行64位机器,但我相信我安装了32位MinGW ......但老实说,我甚至不知道这是不是真正的问题,更不用说如果它是如何修复它。我是C ++和Qt的新手。

根据要求,这是我的代码: 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

如果还需要其他任何东西,请问。

这是完整的调试回溯:

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    

更新:我运行了示例toy clock,它运行正常。但是,当我运行calculator form时,它会导致完全相同的错误。我注意到calculator form是正常的项目形式:它有一个.pro,以及Header,Sources和Forms文件夹。另一方面,toy clock只有一个.qmlproject文件和一个qml文件夹。它也在具有相同回溯的相同位置处失败。我实际上并不了解任何这些事情,但希望它有助于找到解决方案。

3 个答案:

答案 0 :(得分:3)

在安装完整个环境后,我遇到了同样的问题。

我一直在搜索,Qt bug跟踪器上似乎有一个错误: https://bugreports.qt.io/browse/QTCREATORBUG-7653

从页面:

  

mingw有多个二进制不兼容的版本。你需要为qt和你的程序使用相同的[1] mingw&gt;版本。这意味着要么使用&gt; mingw版本编译qt,要么使用与编译二进制qt包相同的内容。(我不确定,但这可能比ftp://ftp.qt.nokia.com/misc/MinGW-gcc440_1.zip更新)

     

[1]在ABI意义上相同

答案 1 :(得分:1)

比较我的一些(继承的)Qt应用和此Qt tutorial,我注意到MainWindow的初始值设定项存在差异。它可能只是一个约定,但这些来源显示MainWindow直接继承Ui类,然后直接调用setupUi(this);

因此,这会将您的mainwindow.cpp重新调整为:

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

您没有包含mainwindow.h,但类定义应如下所示:

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

答案 2 :(得分:0)

我也有同样的问题,只需重新启动Windows,问题就解决了,真的很奇怪,但它对我有用。

请求这个帮助!!