Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1794 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++]passage linux -> windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]passage linux -> windows

n°934735
ffomnislas​h
Posté le 31-12-2004 à 20:07:19  profilanswer
 

J'ai un pb qui tourne tres bien sous linux, il utilise les socket (entre autre).
Normalement il ne devrait pas y avoir de problemes pour le compiler sous windows a part quelques includes.
 
J'ai 2 petits problemes:

Code :
  1. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp: In function `void envoie_liste_contact(int)':
  2. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:52: implicit declaration of function `int usleep(...)'
  3. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp: In function `int main()':
  4. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: `socklen_t' undeclared (first use this function)
  5. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: (Each undeclared identifier is reported only once
  6. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: for each function it appears in.)
  7. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:354: parse error before `='
  8. c:\docume~1\ffomni~1\bureau\rezo\serveur.cpp:412: `longueur' undeclared (first use this function)


 
Voici les includes:

Code :
  1. #if defined(WIN32)
  2.    
  3. #else
  4.      #include <sys/socket.h>
  5.      #include <arpa/inet.h>
  6.      #include <netinet/in.h>
  7.      #include <netdb.h>
  8. #endif
  9. #include <pthread.h>
  10. #include <stdlib.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include <unistd.h>
  14. #include "./serveur.h"


 
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/
 
il n'y a rien de bien  particulier sur ces lignes
 

Code :
  1. void envoie_liste_contact(int pos)
  2. {
  3. int i;
  4. for(i=0;i<tab_connect[pos].get_nb_contact();i++)
  5. {
  6. usleep(100000); //ligne 52
  7. send(tab_connect[pos].get_socket(),tab_connect[pos].get_contact(i),strlen(tab_connect[pos].get_contact(i))+1,0);
  8. }
  9. usleep(100000);
  10. send(tab_connect[pos].get_socket(),"FinListe",9,0);
  11. }


 

Code :
  1. int sock_client;
  2. int options=-1;
  3. socklen_t longueur=sizeof(client);//ligne 354


 
Le post original est sur PPC:
http://forum.presence-pc.com/prese [...] 1272-1.htm

mood
Publicité
Posté le 31-12-2004 à 20:07:19  profilanswer
 

n°934739
Lam's
Profil: bas.
Posté le 31-12-2004 à 20:16:26  profilanswer
 

C'est une définition récente, non incorporée dans Winsock2.
Dans ton code, fais un:

Code :
  1. typedef size_t socklen_t;


Et ça devrait aller.  
 
N'oublie pas le WSAStartup() au début de ton code :)

n°934742
ffomnislas​h
Posté le 31-12-2004 à 20:23:41  profilanswer
 

Je vais regarder sur le net a quoi sert WSAStartup() mais c'est util sous Linux ?
 
C'est bon j'ai trouve ce n'est pas utili sous linux ;)


Message édité par ffomnislash le 31-12-2004 à 20:26:17
n°934744
Lam's
Profil: bas.
Posté le 31-12-2004 à 20:26:09  profilanswer
 

Non, c'est uniquement pour Windows. Et c'est nécessaire...

n°934748
ffomnislas​h
Posté le 31-12-2004 à 20:35:01  profilanswer
 

bon ok j'ai plus de probleme avec les socket,
je n'ai plus qu'une seul erreur:
 
serveur.cpp:37: implicit declaration of function `int usleep(...)'
 
a la ligne 37 j'ai simplement:
usleep(100000);
 
Si je met cette ligne en commentaire l'erreur ce repercute sur le usleep() suivant


Message édité par ffomnislash le 31-12-2004 à 20:39:21
n°934757
Lam's
Profil: bas.
Posté le 31-12-2004 à 21:03:40  profilanswer
 

Y a pas de usleep sous windows. Donc soit tu utilises sleep (en secondes), soit tu utilises (sous Windows uniquement) Sleep, en millisecondes:
 
http://msdn.microsoft.com/library/ [...] /sleep.asp

n°934758
ffomnislas​h
Posté le 31-12-2004 à 21:13:58  profilanswer
 

ok ce que je vais faire
 
je fait utiliser usleep() avec des pause >= 1 milliseconde
et sous win je vait ecrire usleep() qui appellera Sleep() :D


Message édité par ffomnislash le 31-12-2004 à 21:14:18

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++]passage linux -> windows

 

Sujets relatifs
MXClass : développez une IHM sous windows[cpp] quel environnement de dev sous Windows?
Librairies de Windows Xpassage d'un site a quelq'un qui n'y connait rien
Avec l'OS Windows-~ sur PDA, on peut faire tourner un EXE ?Passage de variable sqlplus=>shell
Convertir un retour chariot Unix en retour chariot Windows[résolu][C++]Passage de paramètres au constructeur d'une classe mère
changement image au passage de la souris ? non JScomment installer et excuter mysql sous linux
Plus de sujets relatifs à : [C++]passage linux -> windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR