5

好的,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

有问题的文件qatomici386.h位于第 132 行,具体功能如下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;
}

主.cpp:

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

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

    return a.exec();
}

测试1.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

主窗口.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 文件夹。它也在相同的位置以相同的回溯失败。我实际上对这些事情知之甚少,但希望它能帮助找到解决方案。

4

3 回答 3

3

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

我一直在四处寻找,Qt 错误跟踪器上似乎有一个错误: https ://bugreports.qt.io/browse/QTCREATORBUG-7653

从页面:

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

[1] 在 ABI 的意义上相同

于 2012-12-20T18:17:46.510 回答
1

比较我的一些(继承的)Qt 应用程序和这个Qt 教程,我注意到MainWindow. 这可能只是一个约定,但这些来源显示MainWindow直接继承 Ui 类,然后直接调用setupUi(this);.

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

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

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

class MainWindow : public QMainWindow, private Ui::MainWindow
{
//...
于 2012-12-18T20:10:14.843 回答
0

我也有同样的问题,重启windows就解决了,真的很奇怪,但对我有用。

希望这个帮助!

于 2013-12-26T12:36:50.273 回答