Probleme de compilation Multithread

Signaler
Messages postés
5
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
23 juillet 2003
-
Messages postés
5
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
23 juillet 2003
-
Bonjour,
J'ai une classe de ce type :

class C_ClientServer
{
public:
C_ClientServer(void);
~C_ClientServer(void);

bool StartServerListening(char* Adress, int PORT);
DWORD WINAPI ServerListening(LPVOID param);

private:
HANDLE ListenThread;
DWORD ListenThreadID;
HANDLE hRunMutex;
HANDLE hWriteMutex;
int ThreadNr;
};

bool C_ClientServer::StartServerListening(char *Adress, int PORT)
{
//Truc sans importances [Seting-up de sockets]
CreateThread(0,0,ServerListening,0,0,&ListenThreadID);
return true;
}

et donc quand je veu compiler le compilateur (Visual C++7) me sort un joli message du genre :
error C2440: 'cast de type' : impossible de convertir de 'overloaded-function' en 'LPTHREAD_START_ROUTINE'

Pourtant après un zieutage dans la MSDN, ma fonction est normalement typé pour passer en LPTHREAD_START_ROUTINE. Après quelques essais infructueux (genre réinterpreter cast, :: et this->) je teste la fonction _beginthread qui là aussi ne fonctionne pas bien, (une histoire de __cdecl, pas bien compris :|). Le compilateur a l'option /MTd (débogage Multithread).

Donc voilà si quelqun a une idée pour résoudre ou contourner le problème merci :)

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Et oui le compilo a raison. Si ta fonction a une declaration de portee(classe) elle doit etre declaree statique pour que le compilo connaisse son adresse une fois pour toutes.
Ce n'est pas fini:
1) doit retourner DWORD.
2) __stdcall doit etre sa forme d'appel.
Ce sera tout si je n'oublie rien.
BruNews, ciao...
Messages postés
5
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
23 juillet 2003

Merci ça marche nickel maintenant :)