QtAI mit Qt4 compilieren

Alles rund um die Programmierung mit Qt
Antworten
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

QtAI mit Qt4 compilieren

Beitrag von Delryn »

Hallo!

ich hab da ein paar Probleme mit der Compilierung, in der Datei "aibase.h" werden einige, sehr alte Qt-header eingebunden, z.B. "qpopmenu.h".

Bei meiner Qt4 Installation ist keine solche Datei dabei, auch nicht im Qt3Support-Folder.
Wenn ich die Datei Qt3Support/Q3PopupMenu benutze, bekomme ich neue Compilierfehler.


Weiß jemand wie sich das beheben lässt oder ob es eine andere Möglichkeit gibt, mit Qt Graphen zu plotten?

Thanks :D
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du brauchst natürlich eine Version die für Qt4 gemacht ist...

Evtl. http://qwt.sourceforge.net/ ?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag von Delryn »

Ich bekomm es nicht hin, ich bekomm es einfach nicht hin!


Seit 5 Stunden versuche ich jetzt, irgendeine Plottersoftware für Qt zu compilieren.

Entweder sind die Sourcen so alt, das es gar nicht mehr geht, oder es sind kommerzielle varianten, oder die Anleitung ist so dürftig (sorry Uwe!)
das man es nicht kapiert. Irgendwas klappt immer nicht :evil:

Ich bin wahrlich kein DAU und programmiere auch schon länger, aber die Installation von qwt ist eine Zumutung.


Kann mir irgendjemand, der qwt schonmal compiliert hat, eine detaillierte Anleitung für Windows UND Linux geben?!


Selbst wenn ich mit dem SlickEdit versuche aus den qwt-Sourcen (gemoc'ced habe ich) eine Lib zu erstellen, tauchen letztendlich Linkerfehler auf:

Debug/moc_qwt_dial.o(.text+0x14c): In function `ZN7QwtDial11qt_metacastEPKc':
D:/qwt/generated/moc_qwt_dial.cpp:72: undefined reference to `QwtAbstractSlider::qt_metacast(char const*)'
Debug/moc_qwt_dial.o(.text+0x17a): In function `ZN7QwtDial11qt_metacallEN11QMetaObject4CallEiPPv':
D:/qwt/generated/moc_qwt_dial.cpp:77: undefined reference to `QwtAbstractSlider::qt_metacall(QMetaObject::Call, int, void**)'
Debug/moc_qwt_dial.o(.rdata+0x0): In function `ZSt17__verify_groupingPKcjRKSs':
d:/programme/dev-cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2493: undefined reference to `QwtAbstractSlider::staticMetaObject'
Debug/moc_qwt_knob.o(.text+0x16e): In function `ZN7QwtKnob11qt_metacastEPKc':
D:/qwt/generated/moc_qwt_knob.cpp:67: undefined reference to `QwtAbstractSlider::qt_metacast(char const*)'
Debug/moc_qwt_knob.o(.text+0x19c): In function `ZN7QwtKnob11qt_metacallEN11QMetaObject4CallEiPPv':
D:/qwt/generated/moc_qwt_knob.cpp:72: undefined reference to `QwtAbstractSlider::qt_metacall(QMetaObject::Call, int, void**)'
Debug/moc_qwt_knob.o(.rdata+0x0): In function `ZSt17__verify_groupingPKcjRKSs':
d:/programme/dev-cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2493: undefined reference to `QwtAbstractSlider::staticMetaObject'
Debug/moc_qwt_slider.o(.text+0x16e): In function `ZN9QwtSlider11qt_metacastEPKc':
D:/qwt/generated/moc_qwt_slider.cpp:76: undefined reference to `QwtAbstractSlider::qt_metacast(char const*)'
Debug/moc_qwt_slider.o(.text+0x19c): In function `ZN9QwtSlider11qt_metacallEN11QMetaObject4CallEiPPv':
D:/qwt/generated/moc_qwt_slider.cpp:81: undefined reference to `QwtAbstractSlider::qt_metacall(QMetaObject::Call, int, void**)'
Debug/moc_qwt_slider.o(.rdata+0x0): In function `ZSt17__verify_groupingPKcjRKSs':
d:/programme/dev-cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2493: undefined reference to `QwtAbstractSlider::staticMetaObject'
Debug/moc_qwt_wheel.o(.text+0x14c): In function `ZN8QwtWheel11qt_metacastEPKc':
D:/qwt/generated/moc_qwt_wheel.cpp:59: undefined reference to `QwtAbstractSlider::qt_metacast(char const*)'
Debug/moc_qwt_wheel.o(.text+0x17a): In function `ZN8QwtWheel11qt_metacallEN11QMetaObject4CallEiPPv':
D:/qwt/generated/moc_qwt_wheel.cpp:64: undefined reference to `QwtAbstractSlider::qt_metacall(QMetaObject::Call, int, void**)'
Debug/moc_qwt_wheel.o(.rdata+0x0): In function `ZSt17__verify_groupingPKcjRKSs':
d:/programme/dev-cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2493: undefined reference to `QwtAbstractSlider::staticMetaObject'
Debug/qwt_abstract_slider.o(.text+0x184): In function `ZN17QwtAbstractSliderC2EN2Qt11OrientationEP7QWidget':
D:/qwt/src/qwt_abstract_slider.cpp:51: undefined reference to `vtable for QwtAbstractSlider'
Debug/qwt_abstract_slider.o(.text+0x190):D:/qwt/src/qwt_abstract_slider.cpp:51: undefined reference to `vtable for QwtAbstractSlider'
Debug/qwt_abstract_slider.o(.text+0x19c):D:/qwt/src/qwt_abstract_slider.cpp:51: undefined reference to `vtable for QwtAbstractSlider'
Debug/qwt_abstract_slider.o(.text+0x2ee): In function `ZN17QwtAbstractSliderC1EN2Qt11OrientationEP7QWidget':
D:/qwt/src/qwt_abstract_slider.cpp:51: undefined reference to `vtable for QwtAbstractSlider'
Debug/qwt_abstract_slider.o(.text+0x2fa):D:/qwt/src/qwt_abstract_slider.cpp:51: undefined reference to `vtable for QwtAbstractSlider'
Debug/qwt_abstract_slider.o(.text+0x306):D:/qwt/src/qwt_abstract_slider.cpp:51: more undefined references to `vtable for QwtAbstractSlider' follow
Debug/qwt_abstract_slider.o(.text+0x9de): In function `ZN17QwtAbstractSlider15mousePressEventEP11QMouseEvent':
D:/qwt/src/qwt_abstract_slider.cpp:170: undefined reference to `QwtAbstractSlider::sliderPressed()'
Debug/qwt_abstract_slider.o(.text+0xa5a): In function `ZN17QwtAbstractSlider14buttonReleasedEv':
D:/qwt/src/qwt_abstract_slider.cpp:185: undefined reference to `QwtAbstractSlider::valueChanged(double)'
Debug/qwt_abstract_slider.o(.text+0xba9): In function `ZN17QwtAbstractSlider17mouseReleaseEventEP11QMouseEvent':
D:/qwt/src/qwt_abstract_slider.cpp:220: undefined reference to `QwtAbstractSlider::sliderReleased()'
Debug/qwt_abstract_slider.o(.text+0xe71): In function `ZN17QwtAbstractSlider14mouseMoveEventEP11QMouseEvent':
D:/qwt/src/qwt_abstract_slider.cpp:319: undefined reference to `QwtAbstractSlider::sliderMoved(double)'
Debug/qwt_abstract_slider.o(.text+0xf84): In function `ZN17QwtAbstractSlider10wheelEventEP11QWheelEvent':
D:/qwt/src/qwt_abstract_slider.cpp:344: undefined reference to `QwtAbstractSlider::sliderMoved(double)'
Debug/qwt_abstract_slider.o(.text+0x10d9): In function `ZN17QwtAbstractSlider13keyPressEventEP9QKeyEvent':
D:/qwt/src/qwt_abstract_slider.cpp:397: undefined reference to `QwtAbstractSlider::sliderMoved(double)'
Debug/qwt_abstract_slider.o(.text+0x1365): In function `ZN17QwtAbstractSlider11valueChangeEv':
D:/qwt/src/qwt_abstract_slider.cpp:472: undefined reference to `QwtAbstractSlider::valueChanged(double)'
Debug/qwt_dial.o(.text+0x33f7): In function `ZN7QwtDial13keyPressEventEP9QKeyEvent':
D:/qwt/src/qwt_dial.cpp:1207: undefined reference to `QwtAbstractSlider::sliderMoved(double)'
collect2: ld returned 1 exit status
*** Errors occurred during this build ***
Man möge mir meine Wortwahl verzeihen aber ich hab da jetzt fast einen ganzen Arbeitsttag reingesteckt...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Meine Anleitung für Linux:

cvs -d:pserver:anonymous@qwt.cvs.sourceforge.net:/cvsroot/qwt co qwt

cd qwt

qmake-qt4

make

fertig!!!

Ich wette, es ist unter Windows nicht wirklich anders.
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag von Delryn »

Irgendwie schon, es gibt ein Problem mit den Pfaden.

Unter Linux läuft es jetzt, ich muss es leider auch unter Windows zum laufen bekommen.


Folgendes habe ich jetzt unter Windows gemacht:
  • qwt-20060130.zip entpackt
  • qmake qwt.pro eingegeben
  • make eingegeben

Jetzt gibt's irgendwie ein Problem mit den Pfaden in den generierten Files, hier mal ein Screenshot:

Bild

Es scheint so, als ob es Probleme mit den '/' gibt. Manuelles ändern hat nichts gebracht (also src\ oder src/ oder src\\ oder src//).

Hast du eine Idee ?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Könnt ihr nichtmal im Forum suchen? Das wurde schon hundermal gefragt - du hast cygwin / msys (oder genauer sh.exe) im Pfad!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag von Delryn »

Ich hab gesucht, allerdings wusste ich halt nicht wonach genau. (Hab auch google usw. bemüht).

Danke :!:
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Is nur so dass die Frage mindestens einmal die Woche kommt ;)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag von Uwe »

Delryn hat geschrieben:Man möge mir meine Wortwahl verzeihen aber ich hab da jetzt fast einen ganzen Arbeitsttag reingesteckt...
Das kannst Du wieder gut machen, wenn Du schreibst, welche Informationen Dir in der Installationsanleitung weiter geholfen hätten.

Uwe
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag von Delryn »

Uwe hat geschrieben:
Delryn hat geschrieben:Man möge mir meine Wortwahl verzeihen aber ich hab da jetzt fast einen ganzen Arbeitsttag reingesteckt...
Das kannst Du wieder gut machen, wenn Du schreibst, welche Informationen Dir in der Installationsanleitung weiter geholfen hätten.

Uwe


Hallo Uwe,

es wäre vielleicht nicht verkehrt, wenn die Anleitung ausführlicher beschrieben wäre, bzw. wenn man eine mögliche Variante näher erläutert. Der Linuxabschnitt ist soweit top, jeder der sich mit Linux ein bißchen auskennt bekommt das dann auch hin.

Unter Windows ist es verwirrend, das es verschiedene Möglichkeiten gibt.
Z.B. WIN32 und WIN32 mit Qt 4.0.
Laut der Anleitung hätte ich, da ich Qt 4 benutze, deine Sourcen dann mit dem "MinGW compiler from the MSYS shell" machen müssen, was mir gar nichts gesagt hat, obwohl die normale WIN32 Variante auch ausgereicht hätte.

Unter WIN32 sieht es dann so aus, als ob "nmake" Pflicht wäre, dass es auch mit "make" (oder anderen) geht, wird nicht erwähnt.


Vielleicht stell ich mich auch einfach nur dumm an, aber ich hab jedes Mal Probleme, Projekte von anderen (hauptsächlich welche die für Linux geschrieben wurden) zu übersetzen. Das dauert dann immer Stunden und ich muss mir danach selbst eine Anleitung schreiben, damit es beim nächsten Mal schneller geht.



Vielleicht würde hier sowas helfen wie

1.) Vor der Installation dafür sorgen, dass die Qt-Programme qmake, moc usw. sowie make von der Konsole/Shell aus aufgerufen werden können, falls dies nicht bereits der Fall ist

2.) Mit einer Konsole/Shell in das neu entstandene Verzeichnis wechseln und qmake qwt.pro eingeben, ein Makefile ensteht

3.) make eingeben

4.) Um die Beispiele zu compilieren anschließend in das Verzeichnis examples wechseln.

- Dort qmake examples.pro eingeben
- make eingeben

5.) Damit die neu enstandene Lib gefunden werden kann muss
unter Linux bla bla , unter Windows Umgebungsvariable Pfad bla bla bla"
Halt richtig Step-by-Step.

Ansonsten möchte ich natürlich nicht bloß nörgeln, sondern dir sehr dafür danken, dass du dir die Mühe machst und vielen anderen Nutzern solch eine sinnvolle Software zur Verfügung stellst. Danke :!: :!:
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Delryn hat geschrieben: Unter Windows ist es verwirrend, das es verschiedene Möglichkeiten gibt.
Z.B. WIN32 und WIN32 mit Qt 4.0.
Laut der Anleitung hätte ich, da ich Qt 4 benutze, deine Sourcen dann mit dem "MinGW compiler from the MSYS shell" machen müssen, was mir gar nichts gesagt hat, obwohl die normale WIN32 Variante auch ausgereicht hätte.
Die MSys-Shell darf auf keinen Fall benutzt werden wenn qmake mit im Spiel ist. Wird ./configure genommen dann ist sie Pflicht
Delryn hat geschrieben: Unter WIN32 sieht es dann so aus, als ob "nmake" Pflicht wäre, dass es auch mit "make" (oder anderen) geht, wird nicht erwähnt.
Auch hier wieder
nmake -> Visual Studio
make -> MSys/cygwin/ggf. auch Borland
mingw32-make -> Mingw
Delryn hat geschrieben:

1.) Vor der Installation dafür sorgen, dass die Qt-Programme qmake, moc usw. sowie make von der Konsole/Shell aus aufgerufen werden können, falls dies nicht bereits der Fall ist

Also entweder ich weiss was ich tue oder ich lasse es bleiben - wenn ich mit Qt und qmake arbeiten will sollte ich sowas wissen. Sonst muss man noch anfangen zu erklären was der Explorer ist...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag von Delryn »

Klar, irgendwo ist die Grenze.

Nur haben die meisten OpenSource-Projekte den Hang, eine zu technische Installationsanleitung mitzuliefern, die zu knapp gehalten ist.
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag von Uwe »

Christian81 hat geschrieben:Die MSys-Shell darf auf keinen Fall benutzt werden wenn qmake mit im Spiel ist.
Mit "export MINGW_IN_SHELL=1" sollte das eigentlich auch in der MSYS-Shell gehen.

Uwe
Antworten