1

QwtPlot を使用しようとしていますが、この行をMainWindow.cpp

QwtPlot *plot = new QwtPlot(QwtText("Demo"), this);

アプリケーションはエラーなしでコンパイルおよびリンクされますが、実行しようとすると取得されます

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff514227c in ?? () from /usr/lib/libQtGui.so.4

バックトレースなしで。私の.proファイル:

INCLUDEPATH += /usr/include/qwt
CONFIG += qwt
LIBS += -lqwt

Qwt 6.0.2、Qt Creator 2.7.0 を使用しており、Qt 4.8.4 および 5.0.2 がインストールされています。

「Qt Gui アプリケーション」(.ui ファイルなし) と次のコードだけを作成すると、エラーが発生します。

qwt-test.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qwt-test
TEMPLATE = app

INCLUDEPATH += /usr/include/qwt
CONFIG += qwt
LIBS += -lqwt

SOURCES += main.cpp\
        MainWindow.cpp

HEADERS  += MainWindow.hpp

main.cpp

#include "MainWindow.hpp"
#include <QApplication>
#include <QDebug>

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

    return a.exec();
}

MainWindow.hpp

#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_HPP

MainWindow.cpp

// MainWindow.cpp
#include "MainWindow.hpp"

#include <qwt_plot.h>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QwtPlot *plot = new QwtPlot(QwtText("Demo"), this);
}

MainWindow::~MainWindow()
{
}

ありがとう!

4

1 に答える 1

3

これは Qt Creator (または Qwt が Qt 5 と互換性がない) に問題があり、qmake を Qt 4 の qmake として認識しましたが、Qt 5 のものでした。オプション -> ビルド & 実行 -> Qt バージョンでバージョンを修正し、Qt 4 を使用してプロジェクトはセグメンテーション違反を修正しました。

于 2013-05-11T09:04:48.157 に答える