Bigbutcher
Erfahrenes Mitglied
Guten Morgen, liebe Community!
Ich bin gerade dabei mir eine kleine Thread Klasse zu schreiben, jedoch stoße ich auf einen kleinen hartnäckigen Fehler, aber zuerst mein kompletter Code:
Thread.h
Thread.cpp
Wenn ich jetzt eine dieser auskommentierten Stellen einfüge bekomme ich jeweils immer diese Fehlermeldungen:
CreateThread(...)
error C2664: 'CreateThread' : Konvertierung des Parameters 3 von 'unsigned long (void)' in 'unsigned long (__stdcall *)(void *)' nicht moeglich
Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp ueberein
_beginthread(...)
error C2065: '_beginthread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
error C2065: '_endthread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
AfxBeginThread(...)
error C2065: 'AfxBeginThread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
error C2065: 'AfxEndThread' : nichtdeklarierter Bezeichner
Mein Ziel ist es, ein Thread Objekt zu erzeugen und die Methode my_Thread als Thread zu starten.
Aber irgendwie will das ganze anscheinend noch nicht so ganz.
Falls noch irgendetwas unklar ist, dann fragt bitte nach. Ich bin hier grad ein wenig am verzweifeln...
MfG
BB
Ich bin gerade dabei mir eine kleine Thread Klasse zu schreiben, jedoch stoße ich auf einen kleinen hartnäckigen Fehler, aber zuerst mein kompletter Code:
Thread.h
Code:
#ifndef __THREAD_H__
#define __THREAD_H__
#include <iostream>
#include <windows.h>
#include <process.h>
using namespace std;
class Thread
{
public:
Thread();
~Thread();
void start ();
void suspend ();
void stop ();
void setParameter(LPVOID pParam);
private:
HANDLE hThread;
DWORD dwThread;
LPVOID pParam;
enum Status
{
STOPPED,
RUNNING,
SUSPENDING
};
int status;
DWORD WINAPI my_Thread ();
};
#endif
Thread.cpp
Code:
#ifndef __THREAD_CPP__
#define __THREAD_CPP__
#include "Thread.h"
Thread::Thread()
{
this->status = STOPPED;
}
Thread::~Thread()
{
if (this->status == RUNNING || this->status == SUSPENDING)
{
this->stop();
}
}
void Thread::start ()
{
if (this->status == RUNNING)
{
// Thread läuft bereits
return;
}
else if (this->status == SUSPENDING)
{
// Thread fortsetzen
this->status = RUNNING;
// ResumeThread(this->hThread);
}
else
{
// Thread starten
this->status = RUNNING;
// this->hThread = CreateThread(NULL, 0, this->my_Thread, NULL, 0, this->dwThread);
// this->hThread = AfxBeginThread(this->my_Thread, NULL);
// this->hThread = _beginthread(this->my_Thread, 0, NULL);
}
}
void Thread::stop ()
{
if (this->status == RUNNING || this->status == SUSPENDING)
{
this->status = STOPPED;
// AfxEndThread();
// TerminateThread(this->hThread, this->dwThread);
// this->hThread = _endthread();
}
}
void Thread::suspend ()
{
if (this->status == RUNNING)
{
// SuspendThread(this->hThread);
}
}
DWORD WINAPI Thread::my_Thread ()
{
while (true)
{
cerr << "Thread" << endl;
Sleep(1000);
}
return (0);
}
#endif
Wenn ich jetzt eine dieser auskommentierten Stellen einfüge bekomme ich jeweils immer diese Fehlermeldungen:
CreateThread(...)
error C2664: 'CreateThread' : Konvertierung des Parameters 3 von 'unsigned long (void)' in 'unsigned long (__stdcall *)(void *)' nicht moeglich
Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp ueberein
_beginthread(...)
error C2065: '_beginthread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
error C2065: '_endthread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
AfxBeginThread(...)
error C2065: 'AfxBeginThread' : nichtdeklarierter Bezeichner
error C2440: '=' : 'int' kann nicht in 'void *' konvertiert werden
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
error C2065: 'AfxEndThread' : nichtdeklarierter Bezeichner
Mein Ziel ist es, ein Thread Objekt zu erzeugen und die Methode my_Thread als Thread zu starten.
Aber irgendwie will das ganze anscheinend noch nicht so ganz.
Falls noch irgendetwas unklar ist, dann fragt bitte nach. Ich bin hier grad ein wenig am verzweifeln...
MfG
BB