好的,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文件夹。它也在具有相同回溯的相同位置处失败。我实际上并不了解任何这些事情,但希望它有助于找到解决方案。
答案 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,问题就解决了,真的很奇怪,但它对我有用。
请求这个帮助!!