Problem mit Threading
Verfasst: 31. März 2006 16:59
Moin,
vor ein par Tagen habe ich mit QT 4.1.0 begonnen(mit mingw).
Ich hatte mir ein Tool geschrieben mit GUI und wollte es neu schreiben.
Jetzt habe ich ein problem als ich multithreading einbauen wollte:
Ich weis nicht wirklich woran ich bei diesem Fehler bin.
Hier ein par code schnipsel mit denen ihr mir hoffentlich weiterhelfen könnt:
THX im Vorraus
MFG FBIagent[/code]
vor ein par Tagen habe ich mit QT 4.1.0 begonnen(mit mingw).
Ich hatte mir ein Tool geschrieben mit GUI und wollte es neu schreiben.
Jetzt habe ich ein problem als ich multithreading einbauen wollte:
Code: Alles auswählen
./objapplication.o(.text+0x1033):application.cpp: undefined reference to `vtable for threadDnaa'
./objapplication.o(.text+0x1095):application.cpp: undefined reference to `vtable for threadDua'
./objapplication.o(.text+0x22e3):application.cpp: undefined reference to `vtable for threadDnaa'
./objapplication.o(.text+0x2345):application.cpp: undefined reference to `vtable for threadDua'
Ich weis nicht wirklich woran ich bei diesem Fehler bin.
Hier ein par code schnipsel mit denen ihr mir hoffentlich weiterhelfen könnt:
Code: Alles auswählen
//// application.h ////
class application : public QWidget
{
Q_OBJECT
public:
application(QWidget* parent=0);
protected slots:
void buttonDnaaClicked();
void buttonDuaClicked();
void shoutdown();
private:
int startCheck;
bool dnaaStarted,duaStarted;
deleteNotActivatedAccounts *dnaa;
deleteUnusedAccounts *dua;
threadDnaa *dnaaThread;
threadDua *duaThread;
QLabel *labelDnaa,*labelDua;
QPushButton *buttonDnaa,*buttonDua,*buttonExit;
};
//// application.cpp ////
application::application(QWidget* parent) : QWidget(parent)
{
dnaa = new deleteNotActivatedAccounts();
dua = new deleteUnusedAccounts();
dnaaThread = new threadDnaa;
duaThread = new threadDua;
dnaaThread->dnaa = dnaa;
duaThread->dua = dua;
dnaaStarted = false;
duaStarted = false;
...
void application::buttonDnaaClicked()
{
if(dnaaStarted==false)
{
startCheck = dnaa->checkDependence();
if(startCheck==1)
QMessageBox::critical(this,"Start service","Error: Could not find config.txt file!");
else if(startCheck==2)
QMessageBox::critical(this,"Start service","Error: Could not connect to MySQL server.nCheck your config.");
else
{
dnaaThread->start();
dnaaStarted=true;
buttonDnaa->setText("Stop");
}
}
else
{
dnaa->exit = true;
dnaaThread->wait();
dnaaStarted = false;
...
void application::buttonDuaClicked()
{
if(duaStarted==false)
{
startCheck = dua->checkDependence();
if(startCheck==1)
QMessageBox::critical(this,"Start service","Error: Could not find config.txt file!");
else if(startCheck==2)
QMessageBox::critical(this,"Start service","Error: Could not connect to MySQL server.nCheck your config.");
else
{
duaThread->start();
duaStarted=true;
buttonDua->setText("Stop");
}
}
else
{
dua->exit = true;
duaThread->wait();
duaStarted = false;
...
//// threadDnaa.h ////
class threadDnaa : public QThread
{
public:
deleteNotActivatedAccounts *dnaa;
virtual void run();
};
//// threadDnaa.cpp ////
void threadDnaa::run()
{
dnaa->start();
}
//// threadDua.h ////
class threadDua : public QThread
{
public:
deleteUnusedAccounts *dua;
virtual void run();
};
//// tthreadDua.cpp ////
void threadDua::run()
{
dua->start();
}
MFG FBIagent[/code]