Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] QwtPlot3d Linux
QtWS25 Last Chance

[SOLVED] QwtPlot3d Linux

Scheduled Pinned Locked Moved General and Desktop
15 Posts 3 Posters 10.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    avmg
    wrote on 22 Jul 2014, 14:52 last edited by
    #1

    Hi,

    I downloaded the QwtPlot3d feature but at the moment it doesn't work for me. I try to run the examples, and also i tried to add the include files to a new project but at the end the errors are same. Looks like they are related with some "glu" library, this is one of the errors:

    error: 'gluErrorString' was not declared in this scope

    I found some instructions to use QwtPlot3d in windows but nothing for Linux. I also don't know if i need to install some "OpenGL" staff or whatever...

    I saw many people with this problem but i couldn't find any answer or solution yet.

    Any suggestion???

    Thanks,
    Andrew

    1 Reply Last reply
    1
    • J Offline
      J Offline
      JKSH
      Moderators
      wrote on 23 Jul 2014, 03:01 last edited by
      #2

      Hi,

      Yes QwtPlot3D "requires OpenGL 1.1 or higher":http://qwtplot3d.sourceforge.net/. You will need to install OpenGL development libraries.

      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

      1 Reply Last reply
      0
      • A Offline
        A Offline
        avmg
        wrote on 23 Jul 2014, 08:00 last edited by
        #3

        Ok, I will try it.

        Thanks

        1 Reply Last reply
        0
        • A Offline
          A Offline
          avmg
          wrote on 24 Jul 2014, 16:03 last edited by
          #4

          Hi again,

          I installed OpenGL as you recomend me but now when i create a Plot3D i get this error:

          error: undefined reference to `Qwt3D::Plot3D::Plot3D(QWidget*, QGLWidget const*)'
          File not found: "path from the Form1.cpp"

          This is how i have created the plot:

          @
          //Form1.h
          public:
          Qwt3D::Plot3D *plot;

          //Form1.cpp
          QGridLayout *grid = new QGridLayout( );
          plot = new Plot3D();
          grid->addWidget( plot, 0, 0 );
          @

          Thanks,
          Andrew

          1 Reply Last reply
          0
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 24 Jul 2014, 21:19 last edited by
            #5

            Hi,

            How did you setup the library ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • A Offline
              A Offline
              avmg
              wrote on 25 Jul 2014, 19:49 last edited by
              #6

              Hi!

              First thing I did after downloading the library was build "qwtplot3d.pro" and get these dynamic libraries:

              libqwtplot3d.so
              libqwtplot3d.so.0
              libqwtplot3d.so.0.3
              libqwtplot3d.so.0.3.0

              Then I use them for the new projects, or starting simply, let's try with the examples. So I open the example "simpleplot" with the next files, and I modify the common.pro file to add the libraries:

              simpleplot.cpp:
              @
              #include <math.h>
              #include "/home/amg/Qt/5.3/gcc_64/include/QtWidgets/qapplication.h"
              #include <qwt3d_plot.h>
              #include <qwt3d_curve.h>
              #include <qwt3d_color.h>
              #include <qwt3d_function.h>

              using namespace Qwt3D;

              class Rosenbrock : public Function
              {
              public:

              Rosenbrock(Curve& pw)
              :Function(pw)
              {
              }
              
              double operator()(double x, double y)
              {
                return log((1-x)*(1-x) + 100 * (y - x*x)*(y - x*x)) / 8;
              }
              

              };

              class RosenbrockNegative : public Function
              {
              public:

              RosenbrockNegative(Curve& pw)
              :Function(pw)
              {
              }
              
              double operator()(double x, double y)
              {
                return -1.0 * (log((1-x)*(1-x) + 100 * (y - x*x)*(y - x*x)) / 8);
              }
              

              };

              class Plot : public Plot3D
              {
              public:
              Plot();
              private:
              Curve* curve_p;
              Curve* curve_p2;
              };

              Plot::Plot()
              {
              curve_p = new Curve(this);
              addCurve(curve_p);
              Rosenbrock rosenbrock(*curve_p);

              rosenbrock.setMesh(41,31);
              rosenbrock.setDomain(-1.73,1.5,-1.5,1.5);
              rosenbrock.setMinZ(-10);
              
              rosenbrock.create();
              
              setTitle("A Simple SurfacePlot Demonstration");
              
              curve_p2 = new Curve(this);
              addCurve(curve_p2);
              RosenbrockNegative rosenbrockNegative(*curve_p2);
              
              rosenbrockNegative.setMesh(41,31);
              rosenbrockNegative.setDomain(-1.73,1.5,-1.5,1.5);
              rosenbrockNegative.setMinZ(-10);
              
              rosenbrockNegative.create();
              
              setRotation(30,0,15);
              setScale(1,1,1);
              setShift(0.15,0,0);
              setZoom(0.9);
              
              for (unsigned i=0; i!=coordinates()->axes.size(); ++i)
              {
                coordinates()->axes[i].setMajors(7);
                coordinates()->axes[i].setMinors(4);
              }
              
              
              coordinates()->axes[X1].setLabelString("x-axis");
              coordinates()->axes[Y1].setLabelString("y-axis");
              //coordinates()->axes[Z1].setLabelString(QChar(0x38f)); // Omega - see http://www.unicode.org/charts/
              
              
              setCoordinateStyle(BOX);
              

              // comment out the next line to use default single legend mode
              setDoubleLegend(); // setup the default colour legend mode

              //setup the multi-curve colour legends
              curve_p->setColorLegend(0, isDoubleLegend(),
              isDoubleLegend() ? QSize(2,28) : QSize(3,32),
              isDoubleLegend() ? QPoint(7,10) : QPoint(3,10));
              curve_p2->setColorLegend(1, isDoubleLegend(),
              isDoubleLegend() ? QSize(2,28) : QSize(3,32),
              isDoubleLegend() ? QPoint(7,10) : QPoint(3,10));

              showColorLegend(true); // show the actual curve legends

              updateData();
              updateGL();
              

              }

              int main(int argc, char **argv)
              {
              QApplication a(argc, argv);
              Plot plot;
              #if QT_VERSION < 0x040000
              a.setMainWidget(&plot);
              #endif
              plot.resize(800,600);
              plot.show();
              return a.exec();
              }
              @

              simpleplot.pro:
              @
              include( ../common.pri )
              SOURCES = simpleplot.cpp
              @

              common.pri
              @
              TEMPLATE = app
              CONFIG += qt warn_on thread release
              UI_DIR = tmp
              MOC_DIR = tmp
              OBJECTS_DIR = tmp
              INCLUDEPATH += ../../include
              DEPENDPATH = $$INCLUDEPATH
              DESTDIR = ../bin

              unix:LIBS += -L/home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux -lqwtplot3d

              linux-g++:QMAKE_CXXFLAGS += -fno-exceptions

              CONFIG(debug, debug|release) {
              DESTDIR = ../bin/debug
              } else {
              DESTDIR = ../bin/release
              }

              Choose +/- on the following line to show/hide debug output relating to library branch code

              DEFINES -= QT_NO_DEBUG_OUTPUT

              win32 {
              win32-g++ {
              LIBS += ../../lib/qwtplot3d.dll
              } else {
              LIBS += ../../lib/qwtplot3d.lib
              TEMPLATE = vcapp
              CONFIG(debug, debug|release) {
              QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt
              }
              }
              DEFINES += QT_DLL QWT3D_DLL
              RC_FILE = ../icon.rc
              }

              MYVERSION = $$[QMAKE_VERSION]
              ISQT4 = $$find(MYVERSION, ^[2-9])

              !isEmpty( ISQT4 ) {
              RESOURCES = ../images.qrc
              QT += opengl
              }

              isEmpty( ISQT4 ) {
              CONFIG += opengl
              }
              @

              The only thing i change was the next line:
              @unix:LIBS += -L/home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux -lqwtplot3d@

              Because by default is like this...:
              @unix:LIBS += -lqwtplot3d -L../../lib@

              And also i modified some includes which were not detected. The errors i get are:

              /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluDisk' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluNewQuadric'
              /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricOrientation' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluUnProject'
              /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricNormals' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricDrawStyle'
              /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluDeleteQuadric' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluCylinder'
              /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to `gluProject'

              These funcionts belongs to glu.h. I saw also in similar cases that there's not openGL/Glut library linked to project.

              But i tried many things but i'm not sure where is the problem...

              Thanks,
              Andrew

              1 Reply Last reply
              0
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 25 Jul 2014, 19:57 last edited by
                #7

                Then you need to link to glut by hand

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  avmg
                  wrote on 25 Jul 2014, 20:03 last edited by
                  #8

                  I saw something like adding -lGL -lGLU, but i don't where and how...

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 25 Jul 2014, 20:35 last edited by
                    #9

                    Your pro file

                    @
                    LIBS += -lglu
                    @

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      avmg
                      wrote on 26 Jul 2014, 08:05 last edited by
                      #10

                      I checked where are the libraries and i add:

                      @unix:LIBS += -L/usr/lib/x86_64-linux-gnu/mesa/ -lglu@

                      and also i tried with:

                      @unix:LIBS += -L/usr/lib/x86_64-linux-gnu -lGLU@

                      ..because the files are named libGLU.so, but didn't work. In the second case i get these errors:

                      /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluDisk' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluNewQuadric'
                      /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricOrientation' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluUnProject'
                      /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricNormals' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluQuadricDrawStyle'
                      /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluDeleteQuadric' /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to gluCylinder'
                      /home/amg/Qt/build-qwtplot3d-Qt_5_2_0_gcc_64-Debug/lib/release/linux/libqwtplot3d.so: undefined reference to `gluProject'

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 26 Jul 2014, 09:34 last edited by
                        #11

                        What do you get if you run ldd libqwtplot3d.so ?

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          avmg
                          wrote on 26 Jul 2014, 09:39 last edited by
                          #12

                          If I run it in a terminal it says that the file doesn't exist... Do I need to run it in its file location?

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            avmg
                            wrote on 26 Jul 2014, 09:55 last edited by
                            #13

                            Now i build qwtplot3d in a terminal:

                            @cd qwtplot3d; qmake && make; cd ..
                            @

                            I get new libraries, i added them:

                            @unix:LIBS += -L/home/amg/Qt/qwtplot3d/lib/release/unix -lqwtplot3d
                            unix:LIBS += -L/usr/lib/x86_64-linux-gnu -lGLU@

                            And now i get these errors:

                            /usr/bin/ld: /home/amg/Qt/qwtplot3d/lib/release/unix/libqwtplot3d.a(gl2ps.o): undefined reference to symbol 'compress'
                            //lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO missing from command line
                            collect2: error: ld returned 1 exit status

                            'compress' i guess is from zlib compressor needed for the qwt3dplot, but i already install...

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              avmg
                              wrote on 26 Jul 2014, 10:24 last edited by
                              #14

                              SOLVED!

                              I was adding the LIBS in different lines. I put the compressor, the qwt3dplot and glu libraries in the same command and finally it worked!!!

                              @unix:LIBS += -L/home/amg/Qt/qwtplot3d/lib/release/unix -lqwtplot3d -lz -lGLU@

                              Thanks!

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on 26 Jul 2014, 11:09 last edited by
                                #15

                                You can use multiple lines without any problem, just ensure you are writing it right.

                                @
                                unix {
                                LIBS += -L/home/amg/Qt/qwtplot3d/lib/release/unix
                                -lqwtplot3d

                                LIBS += -lz -lGLU
                                }
                                @

                                Since it's solved now, please update the thread title prepending [solved] so other forum users may know a solution has been found :)

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                1 Reply Last reply
                                0

                                3/15

                                23 Jul 2014, 08:00

                                topic:navigator.unread, 12
                                • Login

                                • Login or register to search.
                                3 out of 15
                                • First post
                                  3/15
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved