IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Conversion de char vers const char


Sujet :

Visual C++

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut Conversion de char vers const char
    Bonjour,

    J'ai toujours cette erreur avec mon code:
    error C2664: 'send' : cannot convert parameter 2 from 'unsigned char [72]' to 'const char *'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //#include <winsock2.h>
     
    			if (send(sock,bindstr,sizeof(bindstr),0)==SOCKET_ERROR)
    			{
    				printf("Send failed.Error:%d\n",WSAGetLastError());
    				return;
    			}
    ainsi que error C2664: 'recv' : cannot convert parameter 2 from 'unsigned char [4000]' to 'char *'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i=recv(sock,buf1,1024,MSG_PEEK);
    Je me demande qu'est-qu'il y a d'incohérent entre un char[] et un char* ??
    Dernière modification par Lucas Panny ; 18/08/2008 à 14h15.

  2. #2
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Lucas Panny Voir le message
    error C2664: 'send' : cannot convert parameter 2 from 'unsigned char [72]' to 'const char *'
    Le code que tu présentes ne correspond pas à l'erreur décrite.
    Citation Envoyé par Lucas Panny Voir le message
    Je me demande qu'est-qu'il y a d'incohérent entre un char[] et un char* ??
    Ce n'est justement pas un char[] que tu passes à la fonction recv(), mais un unsigned char[]. Ton autre problème avec send() semble être du même acabit.

  3. #3
    Lucas Panny
    Invité(e)
    Par défaut

    Ok, c'est rectifié mais le 2è code était toujours le bon !!

    Ce n'est justement pas un char[] que tu passes à la fonction recv(), mais un unsigned char[]
    Oui, j'y passe un unsigned char[]. N'est-ce pas seulement un WARNING ??
    En commentant "unsigned", j'ai ces erreurs:
    Linking...
    Chatty.obj : error LNK2001: unresolved external symbol __imp__recv@16
    Chatty.obj : error LNK2001: unresolved external symbol __imp__send@16
    Chatty.obj : error LNK2001: unresolved external symbol __imp__WSAConnect@28
    Chatty.obj : error LNK2001: unresolved external symbol __imp__socket@12
    Chatty.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
    Chatty.obj : error LNK2001: unresolved external symbol __imp__htons@4
    Chatty.obj : error LNK2001: unresolved external symbol __imp__WSAGetLastError@0
    Chatty.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
    Debug/Chatty.exe : fatal error LNK1120: 8 unresolved externals
    Error executing link.exe.

    Chatty.exe - 9 error(s), 22 warning(s)

  4. #4
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Une fois le unsigned mis en commentaire, ta compilation fonctionne, c'est l'édition de liens qui a un problème. En effet, Visual ne trouve pas le corps des fonctions citées.
    As-tu bien rajouté la librairie Ws2_32.lib aux dépendances supplémentaires des options du projet (cf MSDN) ?

  5. #5
    Lucas Panny
    Invité(e)
    Par défaut
    As-tu bien rajouté la librairie Ws2_32.lib aux dépendances supplémentaires des options du projet (cf MSDN) ?
    Bonne question!! Comment faire?

  6. #6
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Dans les options du projet >> éditeur de liens >> Entrée >> Dépendances supplémentaires.

    Dans la MSDN, il est clairement spécifié à la fin de chaque page d'aide sur telle ou telle telle fonction quel header inclure pour y accéder, et quelle librairie ajouter pour pouvoir faire le lien (si le corps de la fonction n'est pas dans les librairies incluses par défaut).
    Il faut donc toujours prendre l'habitude de jeter un oeil à la fin des pages de l'aide .

  7. #7
    Lucas Panny
    Invité(e)
    Par défaut
    J'utilise Visual Studio 6 pour compiler ce code et dans les options "Directories", le répertoire contenant WS2_32.LIB, WINSOCK.LIB est bien là!!
    Quoi de plus ??

  8. #8
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Lucas Panny
    J'utilise Visual Studio 6 pour compiler ce code et dans les options "Directories", le répertoire contenant WS2_32.LIB, WINSOCK.LIB est bien là!!
    Quoi de plus ??
    Donc Visual saura où aller chercher la librairie à lier, mais comment il peut savoir laquelle? Il faut alors que tu lui dises explicitement à quelle librairie statique (.lib) il doit se lier:
    Project settings >> link >> input >> objetc/library modules : ajouter Ws2_32.lib.

  9. #9
    Lucas Panny
    Invité(e)
    Par défaut
    OK, c'est fait, merci spoutspout!
    Il suffisait d'ajouter l'en-tête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "ws2_32")

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Ce qui est vraiment stupide, c'est que ces fonctions prennent un pointeur sur char et non sur void chez MS, alors que même sous POSIX ce n'est pas le cas...

Discussions similaires

  1. Conversion const char* vers std::string
    Par scheme dans le forum C++
    Réponses: 4
    Dernier message: 21/09/2010, 11h02
  2. Réponses: 12
    Dernier message: 03/09/2009, 03h06
  3. [Clé de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    Réponses: 7
    Dernier message: 03/07/2006, 23h30
  4. [MFC] CString vers const char*
    Par Rafoo dans le forum MFC
    Réponses: 9
    Dernier message: 17/06/2006, 15h43
  5. [MFC - ATL] CString vers const char *
    Par VitamineC dans le forum MFC
    Réponses: 2
    Dernier message: 12/04/2006, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo