5

では、Qt Creatorもあります。私は、[プロジェクト]->[アプリケーション]->[Qt GUIアプリケーション]で、最も基本的なアプリケーションを作成してみました。プロジェクトは正常に作成されました。さらに、私がそれをコンパイルしたとき、それはうまく機能しているように見えました。

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.h132行目にあり、特定の機能は次の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、、ヘッダー、ソース、およびフォームフォルダーがあります。一方toy clock.qmlprojectファイルとqmlフォルダがあります。また、同じ場所で同じバックトレースで失敗します。私は実際にはこれらのことについてあまり知りませんが、うまくいけばそれが解決策を見つけるのに役立つでしょう。

4

3 に答える 3

3

この環境全体をインストールした後も、同じ問題が発生しています。

私は周りを検索してきましたが、Qtバグトラッカーにバグがあるようです: https ://bugreports.qt.io/browse/QTCREATORBUG-7653

ページから:

mingwには複数のバイナリ互換バージョンがあります。qtとプログラムの両方に同じ[1]mingw>versionを使用する必要があります。つまり、qtをその> mingwバージョンでコンパイルするか、バイナリ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

私も同じ問題を抱えています。ウィンドウを再起動するだけで問題は解決しました。本当に奇妙ですが、それは私にとってはうまくいきます。

この助けを期待してください!

于 2013-12-26T12:36:50.273 に答える