[c++] prog sous windows

ffomnislash

Grand Maître
Vous allez rire :D

Comme deja dit dans un notre sujet je suis en train d'ecrire un programme en C++.
Ce dernier est deja bien avancé et aavant d'aller trop loin je voudrais le tester sous windows (en théorie a part quelques includes il ne devrait pas y avoir de difference).

Seulement je ne sais pas quoi utiliser sous windows.
Je m'en remet donc a vous pour trouver un bon prog gratuit (si possible) ;)
 

KangOl

Grand Maître
il utilise la version windows de gcc, donc tu ne devrais pas beaucoup changer le code...
 

ffomnislash

Grand Maître
j'ai regardé un peu tous ca, à priori au niveau du code rien ne devrait etre changé, juste quelque include mais j'utilise #if pour cela.

J'ai 2 petits problemes:
[cpp]
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp: In function `void envoie_liste_contact(int)':
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:52: implicit declaration of function `int usleep(...)'
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp: In function `int main()':
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: `socklen_t' undeclared (first use this function)
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: (Each undeclared identifier is reported only once
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: for each function it appears in.)
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: parse error before `='
c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:412: `longueur' undeclared (first use this function)
[/cpp]

Voici les includes:
[cpp]#if defined(WIN32)

#else
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
#endif


#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#include "./serveur.h"[/cpp]

Bon alors comme vous pouvez le voir je n'inclue rien de particulier pour windows pour le moment.

Apparemment j'ai usleep() qui pose pb,j'inclue bien "unistd.h" donc apparemment ca ne viendrais pas de là.

Le deuxième probleme est "socklen_t" qui lui n'est clairement pas definie, donc il manque un include mais lequel? J'ai un peu fouillé le web et le dossier include sans rien trouver :(

Sinon j'ai quand mm resolue un pb, il s'agissait des pthread, voici la page contenant les sources necessaire lors de la compilation:
http://sources.redhat.com/pthreads-win32/
 

KangOl

Grand Maître
je pourrait voir les environs des lignes de code incriminées ?? (serveur.cpp:52)
 

ffomnislash

Grand Maître
il n'y a rien de bie particulie sur ces lignes

[cpp]void envoie_liste_contact(int pos)
{
int i;
for(i=0;i<tab_connect[pos].get_nb_contact();i++)
{
usleep(100000); //ligne 52
send(tab_connect[pos].get_socket(),tab_connect[pos].get_contact(i),strlen(tab_connect[pos].get_contact(i))+1,0);
}
usleep(100000);
send(tab_connect[pos].get_socket(),"FinListe",9,0);
}[/cpp]

[cpp]int sock_client;
int options=-1;
socklen_t longueur=sizeof(client);//ligne 354[/cpp]
 

ffomnislash

Grand Maître
la solution a été trouvée par Lam's sur HFR:
typedef size_t socklen_t;
il faut definir socklen_t a la main ;)


A propos du usleep() c'est tout simplement parce que cette fonction n'existe pas sous windows ...
 

Athropos

Grand Maître
Code:
#if defined(WIN32)

    #define usleep(micro) Sleep(micro/1000)
      
#else

    ...

#endif

[:dawa]
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 058
Membres
1 586 285
Dernier membre
LeFront
Partager cette page
Haut