Автор Тема: Подключение qwt в Simply Linux 6.0.1  (Прочитано 4104 раз)

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Всем доброго времени суток. Понадобилось нарисовать обычный 2D график в QT программе. Прочитал, что для этого используется библиотека qwt и компонент QwtPlot. библиотеку поставил из синаптика и вроде фалы появились. Теперь осталось подключить библиотеку к проекту.

Я пишу в файле проекта следующее:

INCLUDEPATH +=/usr/include/qwt
LIB +=/usr/lib/libqwt.so

Получаю следующую ошибку:

"file not recognized: file truncated"
Причем, INCLUDEPATH +=/usr/include/qwt кажется сработало, так как при отсутствии строки
LIB +=/usr/lib/libqwt.so была получена ошибка, говорящая, что объявление функции найдено, а определение нет.

Вбиваю в поиск файлов "libqwt". Там обнаружил много подобных файлов:

libqwt.so.5.2.0
libqwt.so.5.2
libqwt.so
libqwt_desiqner_plugin.so

Пробовал подключать каждый файл, но не сработало.

Как "оживить" qwt чтобы построить график?
« Последнее редактирование: 03.05.2013 17:46:09 от ruslandh »

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #1 : 03.05.2013 17:16:21 »
Хотя, только что понял, что неверно вызвал библиотечную функцию, но после исправлния всё равно всплывает ошибка
undefined reference to

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #2 : 03.05.2013 17:21:26 »
Попробуйте
LIB += qwt
Андрей Черепанов (cas@)

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #3 : 03.05.2013 17:26:20 »
Попробуйте
Код: [Выделить]
LIB += qwt


По-прежнему ругается на все библиотечные функции.  А на подключение библиотеки никогда. Я могу набрать после LIB случайные символы и ошибки в файле проекта не будет, а вот в самой программе - дело другое.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #4 : 03.05.2013 17:42:33 »
А функция-то есть в этой библиотеке?

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #5 : 03.05.2013 17:53:04 »
А функция-то есть в этой библиотеке?
Да, SetData для построения графика. Передаётся два массива и их размер. Эта функция-метод класса QwtPlotCurve из qwt.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #6 : 03.05.2013 19:32:16 »
Вы полную "ругань" приложите

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #7 : 03.05.2013 19:41:35 »
вот моя mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //qwtPlot = new QwtPlot();
    myPlot->setAxisScale(QwtPlot::xBottom, -1, 1);
    myPlot->setAxisScale(QwtPlot::yLeft, 0, 1);
    myCurve = new QwtPlotCurve("x(y)");
    myCurve->setStyle(QwtPlotCurve::Lines);
    myCurve->setPen(QPen(Qt::blue));
    setGraphData();
    myCurve->attach(myPlot);
    myPlot->replot();
    this->setCentralWidget(myPlot);
}

MainWindow::~MainWindow()
{
    delete ui;
    //delete curve;
    //delete plot;
}

//void MainWindow::buttonClickHandler()
//{
  //  ui->label->setText(ui->lineEdit->text());
//}

void MainWindow::setGraphData()
{
    const int n = 1000;
    double h = 2.0 / n;
    double x[n];
    double y[n];
    for(int i = 0; i < n; i++)
    {
         x[i] = -1 + i * h;
         y[i] = qAbs(x[i]);
    }
        //qwtCurve->setSamples(x, y, n);
    //qwtCurve->QwtPlotItem(x, y, n);
    myCurve->setData(x, y, n);
    //qwtCurve->setData(1.0, 1.0, 1);

}

Ошибка в следующем: пишет для каждой библиотечной функции "undefined reference to"

/home/anton/Документы/программы/qt/labQT-build-desktop/mainwindow.o:-1: In function `MainWindow::setGraphData()':

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlotCurve::setData(double const*, double const*, int)'

/home/anton/Документы/программы/qt/labQT-build-desktop/mainwindow.o:-1: In function `MainWindow::MainWindow(QWidget*)':

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlot::setAxisScale(int, double, double, double)'

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlot::setAxisScale(int, double, double, double)'

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlotCurve::QwtPlotCurve(QString const&)'

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlotCurve::setStyle(QwtPlotCurve::CurveStyle)'

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlotCurve::setPen(QPen const&)'

/home/anton/Документы/программы/qt/labQT/mainwindow.cpp:-1: ошибка: undefined reference to `QwtPlotItem::attach(QwtPlot*)'

/home/anton/Документы/программы/qt/labQT-build-desktop/mainwindow.o:-1: In function `Ui_MainWindow::setupUi(QMainWindow*)':

:-1: ошибка: collect2: ld returned 1 exit status

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #8 : 03.05.2013 19:58:58 »
Да, картина будет неполной без mainmindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//#include <QMainWindow>
#include <QWidget>
#include <QtGui>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qglobal.h>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

//public slots:
  //  void buttonClickHandler();

private slots:
    void on_pushButton_clicked();

private:
    QwtPlot *myPlot;
    QwtPlotCurve *myCurve;
    Ui::MainWindow *ui;
    void setGraphData();

};

#endif // MAINWINDOW_H

Оффлайн Peter_

  • Участник
  • *
  • Сообщений: 105
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #9 : 03.05.2013 20:09:33 »
Вообще в Qt библиотеки надо подключать так:
LIBS += -lqwt
« Последнее редактирование: 03.05.2013 22:56:21 от Peter_ »
Пётр.

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #10 : 03.05.2013 20:22:06 »
Вообще в Qt библиотеки надо подключать так:
Код: [Выделить]
LIBS += -lqwt

увы, не помогло

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #11 : 03.05.2013 21:14:58 »
А какая команда "получается" для линковки?

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #12 : 03.05.2013 21:24:58 »
Цитировать
А какая команда "получается" для линковки?

Упс, не знаю (ранее в qt не программировал). Как это посмотреть? Я не нашел ничего подобного.

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #13 : 03.05.2013 21:32:03 »
А какая команда "получается" для линковки?

Это не файл самого проекта? Может я не туда вписываю? Я добавлял подключение qwt в конец...

#-------------------------------------------------
#
# Project created by QtCreator 2013-04-29T22:18:33
#
#-------------------------------------------------

QT       += core gui

TARGET = labQT
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

INCLUDEPATH +=/usr/include/qwt
LIB += -lqwt

Оффлайн anton1301

  • Участник
  • *
  • Сообщений: 103
Re: Подключение qwt в Simply Linux 6.0.1
« Ответ #14 : 03.05.2013 22:13:37 »
Вы знаете, кажется проблема решилась. Надо было писать не LIB, а LIBS. Тогда у меня всё откомпилировалось, но потом выскочило

Запускается /home/anton/Документы/программы/qt/labQT-build-desktop/labQT...
Программа неожиданно завершилась.
/home/anton/Документы/программы/qt/labQT-build-desktop/labQT завершился с кодом 0
/home/anton/Документы/программы/qt/labQT-build-desktop/labQT завершился с кодом 0

Но тут уже, думаю, проблема моего кода... может быть. Хотя он взят из примера в интернете, по идее не должен.