Page 1 of 2 12 LastLast
Results 1 to 20 of 22

Thread: qHash(double) problem with Qt 4.6 (tp1)

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

    Default qHash(double) problem with Qt 4.6 (tp1)

    Hi,

    I am trying to build QWT 5.2 against Qt 4.6 (tp1) with mingw. The compiler complains about ambiguous overloaded qHash, first instatiated in qwt_valuelist.h:48. Event after I change the #ifdef in ine 39 to include a check for QT_VERSION >= 0x040600, the error remains.

    Has anybody experienced the same or knows of a solution?

    Thanks,
    Sascha

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    I investigated the problem further and it seems to be specific to the combination of MinGW, Qt 4.6 and qwt.

    Trying to compile qwt with a native gcc against Qt 4.6 works, as well as compiling qwt with MinGW against Qt 4.5.x.

    Any input is highly appreciated.

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Please check Qt 4.6 Beta first. If the problem is still there please try to write a small demo using a QList<double>, that shows the problem without Qwt.

    Uwe

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Ah, I see that the beta is out since yesterday! I will try it out and post the results.

    Thanks,
    Sascha

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Hi, I compiled the beta now with MinGW (gcc 4.4) and using a QList<double> inside a Qt project without qwt is no problem.

    Somehow the compiler gets confused at qwt_valuelist.h:48, where a QList<double> is explicitly instantiated for exporting it in the qwt.dll . Uncommenting this line, results in a successful build of qwt with gcc 4.4 and Qt 4.6 beta1.

    Any ideas whats happening there?

    Sascha

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Can you compile Qwt 5.2 with Qt 4.5.x and MinGW (gcc 4.4) or is it a problem of the compiler version ?

    Uwe

  7. #7
    Join Date
    Oct 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    I did that on Linux, cross-compiling with MinGW (gcc 4.4) for Windows and it worked, but I will try it on Windows natively in the next days.

    Sascha

  8. #8
    Join Date
    Oct 2009
    Location
    Vilnius, Lithuania
    Posts
    4
    Qt products
    Qt4

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Had anybody managed with this? I've looked at qhash.h, and it's rewritten since qt 4.5, and I didn't managed to modify qwt so that it compiles for me
    Last edited by Kazakus; 23rd November 2009 at 08:12.

  9. #9
    Join Date
    Nov 2009
    Posts
    11
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Follow to qwt_valuelist.h and change this:

    Qt Code:
    1. #if QT_VERSION < 0x040300
    2. // Some compilers have problems,
    3. // without a qHash(double) implementation
    4. #include <qset.h>
    5. #include <qvector.h>
    6. inline uint qHash(double key) { return uint(key); }
    7. #endif
    To copy to clipboard, switch view to plain text mode 

    to:

    Qt Code:
    1. #if QT_VERSION == 0x040600
    2. // Some compilers have problems,
    3. // without a qHash(double) implementation
    4. #include <qset.h>
    5. #include <qvector.h>
    6. inline uint qHash(double key) { return uint(key); }
    7. #endif
    To copy to clipboard, switch view to plain text mode 

  10. #10
    Join Date
    Oct 2009
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Hi,

    the hint posted by Indalo does not work for me.

    I am using Qt 4.6 RC now and qwt still doesn't compile without modification. However, changing qwt_valuelist.h:37 from

    Qt Code:
    1. #if defined(QWT_TEMPLATEDLL)
    To copy to clipboard, switch view to plain text mode 

    to

    Qt Code:
    1. #if defined(QWT_TEMPLATEDLL) && QT_VERSION < 0x040600
    To copy to clipboard, switch view to plain text mode 

    works for me.

  11. #11

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Hi ,

    i tried all the tricks mentioned above, none worked !
    Any solution ?

    Regards,

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Simply remove the offending line in qwt_valuelist.h

    Uwe

  13. #13

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Thanks Uwe,

    I tried to comment out the line, still getting the same compilation error

    C:/qwt-5.1.2/../../Qt/2009.05/qt/include/QtCore/../../src/corelib/tools/qhash.h:875: error: call of overloaded 'qHash(const double&)' is ambiguous


    Qt Code:
    1. #if defined(QWT_TEMPLATEDLL)
    2.  
    3. #if QT_VERSION < 0x040300
    4. // Some compilers have problems,
    5. // without a qHash(double) implementation
    6. #include <qset.h>
    7. #include <qvector.h>
    8. inline uint qHash(double key) { return uint(key); }
    9. #endif
    10.  
    11. // MOC_SKIP_BEGIN
    12. template class QWT_EXPORT QList<double>;
    13. // MOC_SKIP_END
    14.  
    15. #endif // QWT_TEMPLATEDLL
    To copy to clipboard, switch view to plain text mode 

    How can i check if QT_VERSION is taking the correct value ?

    Is there any other workaround for this issue

    Regards,

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Quote Originally Posted by hassenman View Post
    I tried to comment out the line, still getting the same compilation error...
    Then try harder: a compiler can't fail at a line, that has been removed.

    More explicite: the offending line is the line exporting the template, but you can remove the complete QWT_TEMPLATEDLL scope ( or use qwt_valuelist.h from SVN 5.2 branch. )

    Uwe

  15. #15
    Join Date
    Feb 2010
    Location
    Uppsala
    Posts
    6
    Thanks
    2
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Im' having the same problem but in another file qhash.h. Can someone summon up, simple english, how to work around ambiguous qhash call?

    c:/tools/Qt/2010.01/qt/include/QtCore/../../src/corelib/tools/qhash.h:875: error: call of overloaded 'qHash(const double&)' is ambiguous

    Getting the same problem both on commandline and QT Creator
    QT 4.6.1 2010.01
    QWT 5.2.0
    g++ 4.4.0 (gcc)

    brg
    Jore

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

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    svn co https://qwt.svn.sourceforge.net/svnroot/qwt/branches/qwt-5.2

  17. The following user says thank you to Uwe for this useful post:

    Jore (1st March 2010)

  18. #17
    Join Date
    Sep 2009
    Location
    phoenix, AZ
    Posts
    41
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    SOLUTION

    comment line 48 in the qwt_valuelish.h"
    //template class QWT_EXPORT QList<double>;

    no need to export this symbol !~!

    Michael

  19. #18
    Join Date
    Feb 2010
    Location
    Uppsala
    Posts
    6
    Thanks
    2
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Failed Plugin
    QWT_designer_plugin5.dll uses incompatible QT library. Expected build key "Windows msvc release full", got "Windows mingw release full"
    (yes, I'm a newbie)

    Both the project where I want to use qwt and qwt is compiled for Release. QT is configured for mingw, I do not want to use microsoft visual studio.

    What am I doing wrong?
    (Why is QT expecting msvc when I run it as mingw, do I have to recompile entire QT?)

  20. #19
    Join Date
    Mar 2010
    Posts
    2
    Thanked 1 Time in 1 Post
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    Hi

    I am having exactly the same problem.
    Using QT4.6.2 and mingw on win7 (the OS may be risky, but considering the fact that many XP-users have the same problem, I don't think that this is an issue).
    Compiling qwt-5.2 works fine, but then the plugin does not seem to install correctly in QTDesigner. That is - it works in the "standalone" version of designer but not inside QTCreator. Here, I get the same error as Jore even though I am nowhere using msvc.

    I have tried to get the newst qwt (5.3 or 6.0? the trunk from the svn) and that does not compile at all.

    Does anyone know how to solve this?
    Many thanks in advance!

  21. #20
    Join Date
    Mar 2010
    Posts
    2
    Thanked 1 Time in 1 Post
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: qHash(double) problem with Qt 4.6 (tp1)

    I made it!
    To get it to work, I had to recompile QTCreator. Which seems to confirm that the creator in the binaries is compiled using msvc while the rest has been compiled with mingw (or here it does not matter).
    In any case, all you have to do is download the QTCreator source (from trolltech), compile it from within the running (old) creator using mingw and then start it. Don't forget to set the PATH variable as it is supposed to be and you are good to go.

    This is an EXTREMELY annoying problem, although I believe there is no one to blame really. But it would be nice if it could be documented somewhere, for QT as well as for qwt!

  22. The following user says thank you to kyamon for this useful post:

    Jore (3rd March 2010)

Similar Threads

  1. Problem with QAbstractListModel
    By eekhoorn12 in forum Qt Programming
    Replies: 3
    Last Post: 26th August 2009, 15:26
  2. Replies: 1
    Last Post: 23rd April 2009, 10:05
  3. Replies: 19
    Last Post: 4th April 2009, 00:17
  4. Grid Layout Problem
    By Seema Rao in forum Qt Programming
    Replies: 2
    Last Post: 4th May 2006, 13:45
  5. fftw problem
    By lordy in forum General Programming
    Replies: 1
    Last Post: 16th March 2006, 22:36

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.