PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : qt3 Programm auf WIndows



Linuxexplorer
05-03-2003, 17:53
Hi

Also ich habe ein Programm, dass auf qt3 aufbaut. Dieses möchte ich nun auch für Windows verfügbar machen. Da es die Qtlib bekanntlich nur in der Version 2.3 für Windows gibt, habe ich mich gefragt, wie es möglich wäre mein Programm dennoch für Windows zu compilieren.
Mit diversen #ifdef 's habe ich das Progamm mit qt-2.2.3 durchkompilieren können, leider funktioniert es jetzt nur noch teilweise und es gibt duzende von Segmentation Faults...übrigens, wie kann ich diese Segmentation Faults aufspüren? Habe schon mal mit dem gdb herumgespielt, hab's aber nicht ganz kapiert...

Vielen Dank.

MFG: Linuxexplorer

anda_skoa
05-03-2003, 18:53
Original geschrieben von Linuxexplorer
Also ich habe ein Programm, dass auf qt3 aufbaut. Dieses möchte ich nun auch für Windows verfügbar machen. Da es die Qtlib bekanntlich nur in der Version 2.3 für Windows gibt, habe ich mich gefragt, wie es möglich wäre mein Programm dennoch für Windows zu compilieren.


Nur um das nicht falsch stehen zu lassen:
natürlich gibt es die Qt3 auch für Windows, aber nicht gratis.



Mit diversen #ifdef 's habe ich das Progamm mit qt-2.2.3 durchkompilieren können, leider funktioniert es jetzt nur noch teilweise und es gibt duzende von Segmentation Faults..


Hmm, solange du keine speziellen Qt3 Sachen verwendest und ui Files nur mit dem Qt2 Designer bearbeitest, sollte es relativ einfach gehen.
Unter Linux halt mit den Compat Headern kompileren.



.übrigens, wie kann ich diese Segmentation Faults aufspüren? Habe schon mal mit dem gdb herumgespielt, hab's aber nicht ganz kapiert...


Du erlaubst erstmal das Erstellen von core files
#> ulimit -c unlimited

dann startest du das Programm
#> ./programm

Nach dem Segfault
#>gdb ./programm core
gdb> bt

Ciao,
_

Linuxexplorer
08-03-2003, 10:05
Hallo

Also ich habe alles so gemacht, wie es oeben beschrieben wurde. Nur kann ich mit der Ausgabe nichts anfangen..:
Das meldet gdb:

besa@linuxdesk:~/Desktop/xqusto2 > ulimit -c unlimited
besa@linuxdesk:~/Desktop/xqusto2 > cd src
besa@linuxdesk:~/Desktop/xqusto2/src > ./xqusto2
Speicherzugriffsfehler (core dumped)
besa@linuxdesk:~/Desktop/xqusto2/src > gdb ./xqusto2 core
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-suse-linux"...
Core was generated by `./xqusto2'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/qt-3.0.5/lib/libqt.so.3...done.
Loaded symbols for /usr/lib/qt-3.0.5/lib/libqt.so.3
Reading symbols from /usr/X11R6/lib/libXext.so.6...done.
Loaded symbols for /usr/X11R6/lib/libXext.so.6
Reading symbols from /usr/X11R6/lib/libX11.so.6...done.
Loaded symbols for /usr/X11R6/lib/libX11.so.6
Reading symbols from /usr/lib/libstdc++-libc6.2-2.so.3...done.
Loaded symbols for /usr/lib/libstdc++-libc6.2-2.so.3
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /usr/lib/libGL.so.1...done.
Loaded symbols for /usr/lib/libGL.so.1
Reading symbols from /usr/X11R6/lib/libXmu.so.6...done.
Loaded symbols for /usr/X11R6/lib/libXmu.so.6
Reading symbols from /usr/X11R6/lib/libICE.so.6...done.
Loaded symbols for /usr/X11R6/lib/libICE.so.6
Reading symbols from /usr/X11R6/lib/libSM.so.6...done.
Loaded symbols for /usr/X11R6/lib/libSM.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /usr/X11R6/lib/libXrender.so.1...done.
Loaded symbols for /usr/X11R6/lib/libXrender.so.1
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/lib/libGLcore.so.1...done.
Loaded symbols for /usr/lib/libGLcore.so.1
---Type <return> to continue, or q <return> to quit---
Reading symbols from /usr/X11R6/lib/libXt.so.6...done.
Loaded symbols for /usr/X11R6/lib/libXt.so.6
Reading symbols from /usr/X11R6/lib/X11/locale/common/xlcDef.so.2...done.
Loaded symbols for /usr/X11R6/lib/X11/locale/common/xlcDef.so.2
Reading symbols from /usr/X11R6/lib/X11/locale/common/ximcp.so.2...done.
Loaded symbols for /usr/X11R6/lib/X11/locale/common/ximcp.so.2
Reading symbols from /usr/lib/gconv/ISO8859-1.so...done.
Loaded symbols for /usr/lib/gconv/ISO8859-1.so
Reading symbols from /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2...done.
Loaded symbols for /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
#0 0x40a5e503 in chunk_free () from /lib/libc.so.6
(gdb) bt
#0 0x40a5e503 in chunk_free () from /lib/libc.so.6
#1 0x40a5e253 in free () from /lib/libc.so.6
#2 0x409ac5e4 in __builtin_delete (ptr=0x8138100)
from /usr/lib/libstdc++-libc6.2-2.so.3
#3 0x405abe8a in QStringData::deleteSelf ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#4 0x8056f85 in xqustoCall::sendToDebugWindow (this=0x808f760, msg={
static null = {
static null = <same as static member of an already seen type>,
d = 0x80608f0, static shared_null = 0x80608f0}, d = 0xbffff068,
static shared_null = 0x80608f0})
at /usr/lib/qt-3.0.5/include/qstring.h:727
#5 0x805508d in xqustoCall::checkQuestion (this=0x808f760)
at xqustoCall.cpp:409
#6 0x80575c3 in xqustoCall::qt_invoke (this=0x808f760, _id=77, _o=0xbffff108)
at moc_xqustoCall.cpp:117
#7 0x402ebe94 in QObject::activate_signal ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#8 0x402ebd84 in QObject::activate_signal ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#9 0x406047d9 in QButton::pressed () from /usr/lib/qt-3.0.5/lib/libqt.so.3
#10 0x40377c2a in QButton::mousePressEvent ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
---Type <return> to continue, or q <return> to quit---
#11 0x403266d1 in QWidget::event () from /usr/lib/qt-3.0.5/lib/libqt.so.3
#12 0x4029bc1e in QApplication::internalNotify ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#13 0x4029b48f in QApplication::notify () from /usr/lib/qt-3.0.5/lib/libqt.so.3
#14 0x4023f5a3 in QETWidget::translateMouseEvent ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#15 0x4023c598 in QApplication::x11ProcessEvent ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#16 0x4023b5bb in QApplication::processNextEvent ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#17 0x4029d78f in QApplication::enter_loop ()
from /usr/lib/qt-3.0.5/lib/libqt.so.3
#18 0x4023b53b in QApplication::exec () from /usr/lib/qt-3.0.5/lib/libqt.so.3
#19 0x804e06c in main (argc=1, argv=0xbffff7a4) at main.cpp:29
#20 0x40a08baf in __libc_start_main () from /lib/libc.so.6
(gdb)


MFG: Linuxexplorer

Linuxexplorer
08-03-2003, 11:29
PS: Wenn ich das Programm mit qt3 compiliere, gibt es keine Segmentation Fault..!!!:confused: :confused:

anda_skoa
08-03-2003, 12:16
Hmm, sieht komisch aus.

Hast du auch alle Files unter Qt2 neu kompiliert und alle moc Files und ui File mit dem entsprechenden Qt2 Programm erstellt, bzw. verarbeitet?

Zum Backtrace:
Da was du da siehst, ist der Callstack, also, welche Funktion von wo aufgerufen wurde.
Bei #0 ist der Segfault aufgetreteten.
Dann sucht man am besten nach oben, bis man in eine eigenen Funktion landet und unter sucht das dort genauer, zb durch qDebug Output.

Ciao,
_

Linuxexplorer
08-03-2003, 20:14
Hi

Ja, ich habe alles neu compiliert und erstellt. Ich werde einfach nicht schlau draus! Mit qt3 funktioniert das Programm wunderbar...! Aber mit qt2.2.3....

MFG: Linuxexplorer