[英]Qt Creator error code -1073741819
好吧,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
文件和一個.qmlproject
文件夾。 它也在具有相同回溯的相同位置處失敗。 我實際上並不了解任何這些事情,但希望它有助於找到解決方案。
在安裝完整個環境后,我遇到了同樣的問題。
我一直在搜索,Qt bug跟蹤器上似乎有一個錯誤: https : //bugreports.qt.io/browse/QTCREATORBUG-7653
從頁面:
mingw有多個二進制不兼容的版本。 你需要為qt和你的程序使用相同的[1] mingw>版本。 這意味着要么用你的mingw版本編譯qt,要么使用與編譯二進制qt包相同的內容。(我不確定,但這可能比ftp://ftp.qt.nokia.com更新/misc/MinGW-gcc440_1.zip )
[1]同樣在ABI意義上
比較我的一些(繼承的)Qt應用程序和這個Qt教程 ,我注意到MainWindow
的初始化程序有所不同。 它可能只是一個約定,但這些源顯示MainWindow
直接繼承Ui類,然后直接調用setupUi(this);
。
所以,這會將你的mainwindow.cpp
重新mainwindow.cpp
為:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
setupUi(this);
}
您沒有包含mainwindow.h
,但類定義應如下所示:
class MainWindow : public QMainWindow, private Ui::MainWindow
{
//...
我也有同樣的問題,只需重新啟動Windows,問題就解決了,真的很奇怪,但它對我有用。
請幫助!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.