Probleme de compilation Multithread

TwinSidE Messages postés 5 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 23 juillet 2003 - 16 juil. 2003 à 15:16
TwinSidE Messages postés 5 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 23 juillet 2003 - 16 juil. 2003 à 21:22
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 juil. 2003 à 15:27
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...
0
TwinSidE Messages postés 5 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 23 juillet 2003
16 juil. 2003 à 21:22
Merci ça marche nickel maintenant :)
0
Rejoignez-nous