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

C Discussion :

libws2_32.a : je dois la mettre où ?


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut libws2_32.a : je dois la mettre où ?
    bonjour

    Je suis en train de lire le tutoriel des sockets et je comprend pas ce que demande l'auteur ici :
    Sur Windows

    Tout d'abord, n'oubliez pas, dans chaque projet que vous créez, d'ajouter le fichier "ws2_32.lib" (pour le compilateur Visual C++) ou "libws2_32.a" (pour les autres) dans votre éditeur de liens. Vous trouverez ce fichier dans le dossier "lib" de votre IDE. J'insiste un peu, car on oublie très souvent de le faire
    J'ai trouvé "libws2_32.a" mais ou je dois le mettre ? Avez vous un idée ?

    PS: j'ai essayé de le mettre dans le projet code::block mais ça ne marche pas !

  2. #2
    Membre confirmé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Points : 533
    Points
    533
    Par défaut
    Sous codeblock pour ajouter une bibliothèque à l'éditeur de liens, tu vas dans Project / Build Options... / linker settings et la tu fais add dans la partie link library, et tu vas chercher ton libws2_32.a

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci

    J'ai fais ce que tu as dis, mais ça ne marche toujours pas...

    J'ai toujours plusieurs erreurs et warning lors de la compilation...

  4. #4
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Tu dois ton ws2_32.a dans le répertoire "lib" de ton compilateur (si tu utilises MinGW)

    PS: Pourrais-tu nous monter les erreurs que tu obtiens?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    le fichier "ws2_32.a" se trouve déjà par défaut dans la lib du compilateur

    Voir les erreurs du compilo:

    ro\test\main.c||In function `main'
    ro\test\\main.c|34|error: `SOCKADDR_IN' undeclared (first use in this function)|
    ro\test\\main.c|34|error: (Each undeclared identifier is reported only once|
    ro\test\\main.c|34|error: for each function it appears in.)|
    ro\test\\main.c|34|error: syntax error before "sin"|
    ro\test\\main.c|35|error: `SOCKET' undeclared (first use in this function)|
    ro\test\\main.c|36|error: `socklen_t' undeclared (first use in this function)|
    ro\test\\main.c|49|error: `sock' undeclared (first use in this function)|
    ro\test\\main.c|49|warning: implicit declaration of function `socket'|
    ro\test\\main.c|49|error: `AF_INET' undeclared (first use in this function)|
    ro\test\\main.c|49|error: `SOCK_STREAM' undeclared (first use in this function)|
    ro\test\\main.c|52|error: `INVALID_SOCKET' undeclared (first use in this function)|
    ro\test\\main.c|57|error: `sin' undeclared (first use in this function)|
    ro\test\\main.c|57|warning: implicit declaration of function `htonl'|
    ro\test\\main.c|57|error: `INADDR_ANY' undeclared (first use in this function)|
    ro\test\\main.c|59|warning: implicit declaration of function `htons'|
    ro\test\\main.c|60|warning: implicit declaration of function `bind'|
    ro\test\\main.c|60|error: `SOCKADDR' undeclared (first use in this function)|
    ro\test\\main.c|60|error: syntax error before ')' token|
    ro\test\\main.c|60|error: `recsize' undeclared (first use in this function)|
    ro\test\\main.c|63|error: `SOCKET_ERROR' undeclared (first use in this function)|
    ro\test\\main.c|66|warning: implicit declaration of function `listen'|
    ro\test\\main.c|74|error: `csock' undeclared (first use in this function)|
    ro\test\\main.c|74|warning: implicit declaration of function `accept'|
    ro\test\\main.c|74|error: syntax error before ')' token|
    ro\test\\main.c|74|error: `csin' undeclared (first use in this function)|
    ro\test\\main.c|74|error: `crecsize' undeclared (first use in this function)|
    ro\test\\main.c|75|warning: implicit declaration of function `inet_ntoa'|
    ro\test\\main.c|75|warning: format argument is not a pointer (arg 3)|
    ro\test\\main.c|85|warning: implicit declaration of function `closesocket'|
    ||=== Build finished: 20 errors, 9 warnings ===|

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si la compilation foire, ce n'est pas un problème de bibliothèque, vu que tu n'en es pas encore à l'étape d'édition de liens.

    As-tu inclus le fichier d'en-tête <winsock2.h> ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Oui..

    voici le code source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    #if defined (WIN32)
        #include <winsock2.h>
        typedef int socklen_t;
    #elif defined (linux)
        #include <sys/types.h>
        #include <sys/socket.h>
        #include <netinet/in.h>
        #include <arpa/inet.h>
        #include <unistd.h>
        #define INVALID_SOCKET -1
        #define SOCKET_ERROR -1
        #define closesocket(s) close(s)
        typedef int SOCKET;
        typedef struct sockaddr_in SOCKADDR_IN;
        typedef struct sockaddr SOCKADDR;
    #endif
     
    #include <stdio.h>
    #include <stdlib.h>
    #define PORT 23
     
     
     
    int main(void)
    {
        #if defined (WIN32)
            WSADATA WSAData;
            int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
        #else
            int erreur = 0;
        #endif
     
        /* Socket et contexte d'adressage du serveur */
        SOCKADDR_IN sin;
        SOCKET sock;
        socklen_t recsize = sizeof(sin);
     
        /* Socket et contexte d'adressage du client */
        SOCKADDR_IN csin;
        SOCKET csock;
        socklen_t crecsize = sizeof(csin);
     
        int sock_err;
     
     
        if(!erreur)
        {
            /* Création d'une socket */
            sock = socket(AF_INET, SOCK_STREAM, 0);
     
            /* Si la socket est valide */
            if(sock != INVALID_SOCKET)
            {
                printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock);
     
                /* Configuration */
                sin.sin_addr.s_addr = htonl(INADDR_ANY);  /* Adresse IP automatique */
                sin.sin_family = AF_INET;                 /* Protocole familial (IP) */
                sin.sin_port = htons(PORT);               /* Listage du port */
                sock_err = bind(sock, (SOCKADDR*)&sin, recsize);
     
                /* Si la socket fonctionne */
                if(sock_err != SOCKET_ERROR)
                {
                    /* Démarrage du listage (mode server) */
                    sock_err = listen(sock, 5);
                    printf("Listage du port %d...\n", PORT);
     
                    /* Si la socket fonctionne */
                    if(sock_err != SOCKET_ERROR)
                    {
                        /* Attente pendant laquelle le client se connecte */
                        printf("Patientez pendant que le client se connecte sur le port %d...\n", PORT);
                        csock = accept(sock, (SOCKADDR*)&csin, &crecsize);
                        printf("Un client se connecte avec la socket %d de %s:%d\n", csock, inet_ntoa(csin.sin_addr), htons(csin.sin_port));
                    }
                    else
                        perror("listen");
                }
                else
                    perror("bind");
     
                /* Fermeture de la socket client et de la socket serveur */
                printf("Fermeture de la socket client\n");
                closesocket(csock);
                printf("Fermeture de la socket serveur\n");
                closesocket(sock);
                printf("Fermeture du serveur terminée\n");
            }
            else
                perror("socket");
     
            #if defined (WIN32)
                WSACleanup();
            #endif
        }
     
        return EXIT_SUCCESS;
    }

  8. #8
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Ton fichier d'include "winsock2.h" existe-il bien dans le répertoire d'includes de ton compilateur?

    Ou sinon,ce ne serait pas plûtot winsock.h l'include?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Si si "winsock2.h" existe bien dans le répertoire d'includes du compilateur..

  10. #10
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Et si tu mets winsock.h au lieu de winsock2.h?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Toujours les mêmes erreurs avec "winsock.h"

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Est-ce "WIN32" ou "_WIN32" ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut [Melem] libws2_32.a : je dois la mettre ou?
    Merci il fallait mettre _WIN32.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/04/2009, 22h32
  2. Probleme DLL, je dois la mettre où ?
    Par gretch dans le forum Imagerie
    Réponses: 2
    Dernier message: 18/05/2007, 16h13
  3. [Tableaux] Où dois-je mettre mon "if" ?
    Par Spike dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 18h38
  4. Réponses: 29
    Dernier message: 09/04/2006, 14h38

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