[gelöst] Qwt Installation

Verschiedenes zu Qt
Antworten
Blubb
Beiträge: 15
Registriert: 22. August 2009 10:53

[gelöst] Qwt Installation

Beitrag von Blubb »

Hallo,

sitze jetzt hier schon seit Tagen rum und versuche Qwt 5.2.0 mit Qt 4.6 zum laufen zu bringen, allerdings will mir das einfach nicht gelingen.

Das Kompilieren von Qwt klappt auf meinem Rechner über Visual Studio 2008 CMD mit 'qmake qwt.pro' und anschließend 'nmake' schon mal nicht. Hier krieg ich an unterschiedlichen Stellen aber am häufigsten nach 'qwt_valuelist.h' einen Error (cl.exe und nmake.exe: Rückgabe-Code 0x2).

Habe mir die libs und dlls jetzt auf nem anderen Rechner kompiliert. Habe diese soweit überall eingefügt, wo diese benötigt werden (Qt lib und bin Ordner und bei den Projekteigenschaften unter 'Linker -> Eingabe') und auch die PATH-Variable entsprechend angepasst.
Wenn ich nun allerdings bspw. einen Qwt_Plot an irgendeiner Stelle im Programm erstelle, bekomme ich beim Starten der Applikation folgende Fehlermeldung:
"QWidget: Must construct a QApplication before a QPaintDevice"

Die QApplication wird allerdings in der ersten Zeile in der main() Funktion erstellt...

Wäre wirklich nett, wenn mir hier jemand weiterhelfen könnte, da ich für ein Projekt für die Berufsschule dringend Qwt brauche.


Grüße

Robert
Zuletzt geändert von Blubb am 22. März 2010 02:23, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Beispielcode bitte
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Ich habe qwt schon sehr häufig kompiliert (static, shared), auch mit VS2008 und hatte nie Probleme. Die wichtigsten Einstellungen macht man in der qwtconfig.pri Datei. Dort stellt man auch ein, ob release/debug oder beides und shared oder static.

Dein Fehler in Deiner Applikation deutet darauf hin, das Du unterschiediche Versionen, debug/release, vermischst. Also Du Deine Applikation in Debug-Mode erstellst aber gegen die Release Version von qwt linkst!!! Dabei gibt es immer Probleme!!!

Michael
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Mit welchem Compiler sind deine Qt-Libs kompiliert? Auch mit VS2008? Oder hast du die aus dem fertigen Qt-sdk - AFAIK sind die mit MinGW kompiliert.
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Re: Qwt Installation

Beitrag von Uwe »

sitze jetzt hier schon seit Tagen rum und versuche Qwt 5.2.0 mit Qt 4.6 zum laufen zu bringen, allerdings will mir das einfach nicht gelingen.
Kein Wunder - diese Kombination bekommen ein paar ältere Compiler aus dem MS Stall nicht gebacken. Du benötigst eine aktuelle Version von Qwt aus dem 5.2 SVN Bugfix Branch. ( Du benötigst dafür einen Subversion Client - das zugehörige Kommando findest Du auf der Qwt Homepage ).

Alternativ kannst Du die beanstandeten Deklarationen in qwt_valuelist.h auch einfach ersatzlos löschen.
Wenn ich nun allerdings bspw. einen Qwt_Plot an irgendeiner Stelle im Programm erstelle, bekomme ich beim Starten der Applikation folgende Fehlermeldung:
"QWidget: Must construct a QApplication before a QPaintDevice"
Das ist ein Symptom für eines dieser sinnlosen Build/Runtime Probleme die es unter vernünftigen Betriebssystemen gar nicht gibt. Irgendso ein Kram wie "Vergessen QWT_DLL zu definieren", Debug/Release Bibliotheken mischen oder irgendeine andere Inkompatibilität. Mit dem Code selber hat es in jedem Fall nichts zu tun.

Uwe
Blubb
Beiträge: 15
Registriert: 22. August 2009 10:53

Beitrag von Blubb »

Habe mir die letzte Qwt Version per SVN geholt und damit scheint alles soweit zu klappen. Zumindest kommt nicht mehr diese Fehlermeldung, wenn ich einen Qwt_Plot erstelle.

Besten Dank, dann kann ich endlich mit meinem Projekt weitermachen :lol:
martin2_86
Beiträge: 17
Registriert: 20. März 2010 00:29

Beitrag von martin2_86 »

Hi,

ich habe das gleiche Problem. Ich benutze QT Version 4.6.2 und QWT 5.2. Der Befehl "nmake" in der VS2008 Eingabeaufforderung angewandt auf den Installationspfad von QWT liefer fatale Error (cl.exe und nmake.exe: Rückgabe-Code 0x2). Daher hab ich mir TortoiseSVN runtergeladen und will das mit dem neuesten Bugfix nun probieren. Kannst du bitte posten, wie man das anstellt in TortoiseSVN? Was ich bisher geschafft hab ist den Repo browser zu öffnen und dann auf die URL zu gelangen die auf der QWT seite angegeben ist (https://qwt.svn.sourceforge.net/svnroot ... es/qwt-5.2). Dann erscheinen im browser als unterordner von branches mehrere Ordner mit versch. Versionen (qwt-5.0, qwt-5.1, qwt-5.2, qwt-5.x). Doch an dieser Stelle weiss ich nicht weiter.

Gruß

Martin
Blubb
Beiträge: 15
Registriert: 22. August 2009 10:53

Beitrag von Blubb »

Hi,

am besten du erstellst dir einfach einen neuen Ordner (bspw. C:\Qwt). Wenn du jetzt einen Rechtsklick darauf machst, gibt es im Explorer die Option "SVN Checkout". Dann brauchst du nur noch oben die URL eintragen und auf OK drücken und alles sollte automatisch in diesen Ordner geladen werden.


PS: Ich hatte auch mit der letzten Version von Qwt noch die fatal errors, diese habe ich allerdings durch 'nmake /I' umgangen, wodurch die Fehler von nmake ignoriert werden und einfach weiter kompiliert wird.
martin2_86
Beiträge: 17
Registriert: 20. März 2010 00:29

Beitrag von martin2_86 »

Hi Blubb,

vielen, vielen Dank. Dein "Post Scritum" Hinweis hat mich gerettet. Das mit 'nmake /I' wusst ich nicht, jetzt bin ich soweit dass ich die Qwt Widgets im Qt Designer einbauen kann.

Nun noch folgendes Problem: ich hab in VS als includeverzeichnis nur das ..Qt4\include Verzeichnis angegeben. Wenn ich in meinem code ne Qt H-File einbinden will muss ich immer das verzeichnis dazu angeben, in welchem unterordner von include das liegt (z.B. #include <QtGui/QAction>). In den erstellten ".ui" dateien wird das automatisch berücksichtigt, jedoch nicht in den erstellten dateien von Qwt, wenn ich z.B. nen Plot in meine GUI einfüge (z.B. bei #include <qframe.h> kommt ein Fehler, weil der Unterordner "Qt" nicht angegeben ist). In meinem VS 2008 Projekt hab ich unter C/C++ als Zusätzliche Includeverzeichnisse "$(QTDIR)/include" angegeben. Wie kann ich das einrichten, dass ich nur den Namen einer Datei angebe und die dann auch in allen Unterordnern von ..Qt4\include gesucht werden? Und woher kommt das, dass es beim Erzeugen der .ui dateien automatisch richtig gemacht wird?

Gruß Martin
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Ich habe ein Unterordner Qwt im Qt-Include Ordner angelegt und im *.pro File INCLUDEPATH += $$QMAKE_INCDIR_QT/Qwt eingefügt. Geht wunderbar.

Michael
martin2_86
Beiträge: 17
Registriert: 20. März 2010 00:29

Beitrag von martin2_86 »

Hi,

danke erstmal dass du dir Zeit genommen hast für mein Problem. Ich versteh noch nicht ganz was das genau bewirkt. Du hast einen Unterordern 'Qwt' in 'Qt4\include' angelegt und diesen als zusätzlichen Include path angegeben? Hast du dann die Header-files von Qwt in diesen Ordner kopiert oder ist der Ordner leer? Oder was genau bezweckt das?
Mein Problem ist erstmal (auch ohne Qwt) dass ich immer die Unterordner im Qt-Includeverzeichnis angeben muss (es geht nicht '#include <QWidget.h>, sondern ich muss '#include <Qt/QWidget.h>' angeben, also mit dem Ordner 'Qt'). Nun könnte ich alle Unterordner vom Qt-Includeverzeichnis als zusätzliche Includeverzeichnisse für C/C++ Projekte in Visual Studio angeben, aber das erscheint mir sehr umständlich. Da gibts doch sicher was eleganteres.

Gruß und danke im Voraus.
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Also ich lasse mir die VS-Projektdatei (*.vcproj) von qmake generieren (qmake -t vcapp) und stelle alles über die *.pro Datei ein. Somit muss ich mich um keine Pfade kümmern , außer qwt, siehe oben.
Ich weiss nicht, wie Du Dein Projekt generierst?

Michael
martin2_86
Beiträge: 17
Registriert: 20. März 2010 00:29

Beitrag von martin2_86 »

Ich generier mein Projekt bis jetzt immer direkt in VS2008. Ich hab da eben die ganzen Bibliotheken und Includeverzeichnisse angegeben sowie die moc-einstellungen bei den header-files angegeben und jeweils das Projekt immer im debug modus in VS angeschaut. Wo genau liegt der Unterschied zu deiner Methode (also qmake zu benutzen)? Benutzt VS auch qmake? Gruß
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Es werden alle Pfade, definerte Build Schritte usw. automatisch gesetzt. Du kannst doch ein von qmake generiertes Projekt und Dein generiertes Projekt vergleichen!!! Der Vorteil von qmake generierten Projekten ist doch, dass ich mich nicht um moc, uic usw. kümmern muss.

Michael
Antworten