Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2010, 19:34   #1
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию Qt+qwt

Доброго времени суток уважаемые эксперты. В моем приложении необходимо строить графики функций и гистограммы распределения. Покопавшись в интернете наткнулся на библиотеку qwt. Дабы не заморачиваться с установкой и настройкой последней версии библиотеки установил из репозиториев (у меня ubuntu 10.04) библиотеку 5-й версии. Копнув поглубже нашел простенький пример на Хабре. Немного подправил файл проекта:
Было:
Код:
TEMPLATE      = app

include(qwt.prf)

unix {
}
win32 { 
    LIBS      += -L"D:/mydocs/qt4projects/qt4comp/qwt-5.2.0/lib" -lqwt
}

HEADERS       = QwtBeginner.h

SOURCES       = QwtBeginner.cpp \
                main.cpp
Стало:
Код:
TEMPLATE      = app

LIBS += -lqwt

HEADERS       = QwtBeginner.h

SOURCES       = QwtBeginner.cpp \
                main.cpp
Попытался запустить а вместо программы получаю кучу сообщений типа:
Код:
/home/impuls/QwtBeginner/QwtBeginner.cpp:17: undefined reference to `QwtPlot::QwtPlot(QWidget*)'
/home/impuls/QwtBeginner/QwtBeginner.cpp:18: undefined reference to `QwtPlot::QwtPlot(QWidget*)'
/home/impuls/QwtBeginner/QwtBeginner.cpp:27: undefined reference to `QwtPlotCurve::QwtPlotCurve()'
/home/impuls/QwtBeginner/QwtBeginner.cpp:28: undefined reference to 
Далее идут однотипные ошибки (все не напишу, ибо таково ограничение на длину сообщения)
/home/impuls/QwtBeginner/QwtBeginner.cpp:67: undefined reference to `QwtPlotCurve::setData(double const*, double const*, int)'
collect2: ld returned 1 exit status
Собственно хотелось бы узнать причину такой ненависти компилятора к данной библиотеке)))
З.Ы. Вот тут лежит еще один пример, но на выходе такой же результат(((
Заранее спасибо за помощь.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 08.10.2010, 19:50   #2
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Вот кусок кода:
Код:
//-----------------------------------------------------------------
#include <QWidget>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
//-----------------------------------------------------------------
#include <qwt-qt4/qwt_plot.h>
#include <qwt-qt4/qwt_plot_curve.h>
//-----------------------------------------------------------------
#include <math.h>
//-----------------------------------------------------------------
#include "QwtBeginner.h"
//-----------------------------------------------------------------
QwtBeginner::QwtBeginner(QWidget *parent):QWidget(parent)
{
    // Create plots
    funPlot = new QwtPlot;
    derPlot = new QwtPlot;

    funPlot->setTitle("Function");
    derPlot->setTitle("Derivative");

    // Create curves and attach them to plots
    QPen sinPen = QPen(Qt::red);
    QPen cubPen = QPen(Qt::blue);

    sinFunCurve = new QwtPlotCurve;
    sinFunCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
    sinFunCurve->setPen(sinPen);
    sinFunCurve->attach(funPlot);

    sinDerCurve = new QwtPlotCurve;
    sinDerCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
    sinDerCurve->setPen(sinPen);
    sinDerCurve->attach(derPlot);

    cubFunCurve = new QwtPlotCurve;
    cubFunCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
    cubFunCurve->setPen(cubPen);
    cubFunCurve->attach(funPlot);

    cubDerCurve = new QwtPlotCurve;
    cubDerCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
    cubDerCurve->setPen(cubPen);
    cubDerCurve->attach(derPlot);

    // Set data
    const int N = 20;
    double x[N+1];
    double sinFunData[N+1], sinDerData[N+1];
    double cubFunData[N+1], cubDerData[N+1];
    for (int i = 0; i <= N; ++i)
    {
        const double pi = 4.0 * atan(1.0);
        double L = 2;
        double h = L / N;

        x[i] = -L/2 + i * h;
        sinFunData[i] = sin(x[i] * pi);
        sinDerData[i] = cos(x[i] * pi) * pi;
        cubFunData[i] = x[i] * x[i] * x[i];
        cubDerData[i] = 3 * x[i] * x[i];
    }
    sinFunCurve->setData(x, sinFunData, N+1);
    sinDerCurve->setData(x, sinDerData, N+1);
    cubFunCurve->setData(x, cubFunData, N+1);
    cubDerCurve->setData(x, cubDerData, N+1);

    // Hide curves
    sinFunCurve->setVisible(false);
    sinDerCurve->setVisible(false);

    cubFunCurve->setVisible(false);
    cubDerCurve->setVisible(false);

    // Create buttons
    sinButton = new QPushButton("Sinus"),
    cubButton = new QPushButton("Cubic function"),

    sinButton->setCheckable(true);
    cubButton->setCheckable(true);

    // Connect signals
    connect(sinButton, SIGNAL(toggled(bool)), this, SLOT(sinToggled(bool)));
    connect(cubButton, SIGNAL(toggled(bool)), this, SLOT(cubToggled(bool)));

    // Set layouts
    QHBoxLayout *plotsLayout = new QHBoxLayout;
    plotsLayout->setSpacing(10);
    plotsLayout->addWidget(funPlot);
    plotsLayout->addWidget(derPlot);

    QHBoxLayout *buttonsLayout = new QHBoxLayout ;
    buttonsLayout->addWidget(sinButton);
    buttonsLayout->addWidget(cubButton);

    QVBoxLayout *widgetLayout = new QVBoxLayout;
    widgetLayout->addLayout(plotsLayout);
    widgetLayout->addLayout(buttonsLayout);

    setLayout(widgetLayout);
    showMaximized();
}
//-----------------------------------------------------------------
void QwtBeginner::sinToggled(bool checked)
{
    sinFunCurve->setVisible(checked);
    sinDerCurve->setVisible(checked);
    funPlot->replot();
    derPlot->replot();
}
//-----------------------------------------------------------------
void QwtBeginner::cubToggled(bool checked)
{
    cubFunCurve->setVisible(checked);
    cubDerCurve->setVisible(checked);
    funPlot->replot();
    derPlot->replot();
}
//-----------------------------------------------------------------
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск