Hallo Leute,
ich bin am verzweifeln.
Ich versuche QThread unter Windows zum laufen zu bekommen.
Folgender Minicode läuft problemlos unter Linux.
Unter Windows lässt er sich auch problemlos mit qmake & make compilieren,
allerdings wird der Thread nicht gestartet.
#include <QThread>
#include <iostream>
class MyThread : public QThread
{
public:
virtual void run();
};
void MyThread::run()
{
std::cout << "Thread laeuft!" << std::endl;
}
int main()
{
MyThread thr;
thr.start();
thr.wait();
}
Ich bin an und für sich schon ein erfahrener Qt Programmierer (http://bioinfo.blogg.de) aber mit Threads habe ich bislang nur unter Linux gearbeitet.
Könnt ihr mir sagen was ich falsch mache ?
Vielen Dank !
QThread unter Windows & MinGW
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
aspleniumX
- Beiträge: 2
- Registriert: 30. Juli 2007 22:29
Danke !
An "CONFIG += console" lag es ! Ist unter Linux nicht nötig.
Der Eventloop allerdings mit QtCore ist nicht nötig.
Folgender Code liefert wie erwartet laufend die Ausgaben beider Threads!
#include <QThread>
#include <iostream>
class MyThread : public QThread
{
public:
virtual void run();
};
void MyThread::run()
{
forever {
std::cout << "Thread laeuft!" << std::endl;
}
}
class MyThread2 : public QThread
{
public:
virtual void run();
};
void MyThread2::run()
{
forever {
std::cout << "Thread2 laeuft!" << std::endl;
}
}
int main()
{
MyThread thr;
thr.start();
MyThread2 thr2;
thr2.start();
thr.wait();
thr2.wait();
}
Schöne Grüße !!!
An "CONFIG += console" lag es ! Ist unter Linux nicht nötig.
Der Eventloop allerdings mit QtCore ist nicht nötig.
Folgender Code liefert wie erwartet laufend die Ausgaben beider Threads!
#include <QThread>
#include <iostream>
class MyThread : public QThread
{
public:
virtual void run();
};
void MyThread::run()
{
forever {
std::cout << "Thread laeuft!" << std::endl;
}
}
class MyThread2 : public QThread
{
public:
virtual void run();
};
void MyThread2::run()
{
forever {
std::cout << "Thread2 laeuft!" << std::endl;
}
}
int main()
{
MyThread thr;
thr.start();
MyThread2 thr2;
thr2.start();
thr.wait();
thr2.wait();
}
Schöne Grüße !!!
-
Einmaliger
- Beiträge: 48
- Registriert: 22. Juli 2006 11:42
Vielleicht mal zur Erklärung (sofern nicht ohnehin bekannt):
Unter Windows gibt es tatsächlich eine Unterscheidung zwischen EXE-Dateien für die Konsole und EXE-Dateien mit GUI. Das heißt insbesondere, dass man in Qt-Programmen mit GUI unter Windows nichts auf der Konsole ausgeben kann. Für Debugging-Zwecke ist das natürlich grottig
Unter Windows gibt es tatsächlich eine Unterscheidung zwischen EXE-Dateien für die Konsole und EXE-Dateien mit GUI. Das heißt insbesondere, dass man in Qt-Programmen mit GUI unter Windows nichts auf der Konsole ausgeben kann. Für Debugging-Zwecke ist das natürlich grottig