Results 1 to 11 of 11

Thread: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

  1. #1
    Join Date
    Jan 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    I'm struggling to get a QWT plot into my application with so little documentation -- an official intro/howto guide would be helpful. The few examples lingering around the net are from different versions that use very different syntax, etc....

    Ok, /rant.

    I'm trying to compile this as a generic plot of y = x^2 for the moment:
    histPlot.cpp:
    Qt Code:
    1. #include <qwt5/qwt_plot.h>
    2. #include <qwt5/qwt_plot_curve.h>
    3. #include "histPlot.h"
    4. #include <QWidget>
    5.  
    6. HistPlot::HistPlot( QWidget *parent ) : QwtPlot( parent)
    7. {
    8. // Show a title
    9. setTitle( "History" );
    10.  
    11. // Create curves
    12. QwtPlotCurve * curve = new QwtPlotCurve("Curve");
    13.  
    14. double x[100], y[100];
    15.  
    16. for (int i = 0; i < 100; i++){
    17. x[i] = i;
    18. y[i] = i*i;
    19. }
    20.  
    21. curve->setData(x,y,100);
    22. curve->attach(this);
    23.  
    24. // Show the plots
    25. replot();
    26.  
    27. }
    To copy to clipboard, switch view to plain text mode 
    But I get this from the compiler:
    g++ -o timeClock dialogs.o fileOps.o frame.o histPlot.o main.o mainWindow.o timeFunctions.o timeSheet.o moc_frame.o moc_histPlot.o moc_mainWindow.o -L/usr/lib64/qt4 -lqwt -lQtGui -L/usr/lib64 -L/usr/lib64/qt4 -L/usr/X11R6/lib64 -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -lrt -ldl -lpthread
    moc_histPlot.o: In function `HistPlot::qt_metacall(QMetaObject::Call, int, void**)':
    moc_histPlot.cpp:(.text+0x11): undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'
    moc_histPlot.o: In function `HistPlot::qt_metacast(char const*)':
    moc_histPlot.cpp:(.text+0x58): undefined reference to `QwtPlot::qt_metacast(char const*)'
    moc_histPlot.o:(.rodata+0x0): undefined reference to `QwtPlot::staticMetaObject'
    collect2: ld returned 1 exit status
    make: *** [timeClock] Error 1
    Neither I nor google have any idea what qt_metacall is, nor why it can't be found. Any ideas?
    Last edited by jacek; 22nd January 2009 at 20:17. Reason: changed [code] to [quote]

  2. #2
    Join Date
    Jan 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    The ever-friendly folks in #qt have pointed out that these errors usually result from not moc'ing a header with a Q_OBJECT call. the header for histPlot.cpp does indeed call Q_OBJECT, but it also does get moc'ed. Upon hearing this, #qt told me to find #qwt Since #qwt does not exist, I suppose this is the next best thing. Any ideas?

  3. #3
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    5,372
    Thanks
    28
    Thanked 976 Times in 912 Posts
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    Maybe the linker has problems in finding Qwt? Do you have libqwt.so file on your system?

  4. #4
    Join Date
    Jan 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    The qwt library is in my linking path, but it does seem to be a problem with the linker.

    Removing Q_OBJECT macro from the histPlot.h header didn't help. Let me know if theres anything else that would be helpful to see -- I'd really like to resolve this quickly

  5. #5
    Join Date
    Jan 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    The error changes a bit when Q_OBJECT is removed:
    Qt Code:
    1. histPlot.o:(.rodata._ZTV8HistPlot[vtable for HistPlot]+0x18): undefined reference to `QwtPlot::qt_metacast(char const*)'
    2. histPlot.o:(.rodata._ZTV8HistPlot[vtable for HistPlot]+0x20): undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'
    3. collect2: ld returned 1 exit status
    4. make: *** [timeClock] Error 1
    To copy to clipboard, switch view to plain text mode 

  6. #6
    Join Date
    Jan 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    Got it working. Updated to the latest Qwt and linking completes.

  7. #7
    Join Date
    Sep 2009
    Posts
    5
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    I have the same problem, only I'm already using qwt-5.2.0 so I can't update.
    This project works on another computer not mine. I can compile and run qwt examples
    Any ideas what the problem might be?

  8. #8
    Join Date
    Oct 2009
    Posts
    8
    Thanks
    1
    Thanked 3 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    I don't have a build environment handy to verify this advice, but the error looks familiar...

    Make sure QWT_DLL is defined in your compiler flags.

  9. #9
    Join Date
    Sep 2009
    Posts
    5
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    I solved this problem by changing the install dir of qwt to /usr, this in linux

  10. #10
    Join Date
    Feb 2006
    Location
    Munich, Germany
    Posts
    3,311
    Thanked 879 Times in 827 Posts
    Qt products
    Qt3 Qt4 Qt/Embedded
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    Quote Originally Posted by mendes View Post
    I solved this problem by changing the install dir of qwt to /usr, this in linux
    Whatever solved the problem in your particular situation - changing the install dir to /usr has absolutely nothing to do with it.

    Uwe

  11. #11
    Join Date
    Dec 2008
    Posts
    23
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: undefined reference to `QwtPlot::qt_metacall(QMetaObject::Call, int, void**)'

    I receive the same error when I changed qwt from shared lib to static library under linux. any idea what may be the issue? thanks.

Similar Threads

  1. Unable to install QT 4.4.0 from sources
    By debnathm in forum Installation and Deployment
    Replies: 4
    Last Post: 6th August 2008, 06:43
  2. how to add static library into qmake
    By Namrata in forum Qt Tools
    Replies: 1
    Last Post: 20th November 2007, 17:33
  3. MS Sql native driver??
    By LordQt in forum Qt Programming
    Replies: 4
    Last Post: 9th October 2007, 13:41
  4. error undefined reference ...............
    By amit_pansuria in forum Qt Programming
    Replies: 2
    Last Post: 8th June 2007, 14:28
  5. how to correctly compile threads support?
    By srhlefty in forum Installation and Deployment
    Replies: 9
    Last Post: 25th June 2006, 19:15

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.