QThread unter Windows & MinGW

Alles rund um die Programmierung mit Qt
Antworten
aspleniumX
Beiträge: 2
Registriert: 30. Juli 2007 22:29

QThread unter Windows & MinGW

Beitrag von aspleniumX »

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 !
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Erstens sehe ich kein Q(Core)Application - also auch keine Eventloop. Und zweitens sehe ich auch nicht woher Du wissen willst das der Thread wirklich nicht gestartet wird -> Doku 'CONFIG += console'
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aspleniumX
Beiträge: 2
Registriert: 30. Juli 2007 22:29

Beitrag von aspleniumX »

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 !!!
Einmaliger
Beiträge: 48
Registriert: 22. Juli 2006 11:42

Beitrag von Einmaliger »

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 :(
Antworten