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 :

[Linker error] undefined reference to ..


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut [Linker error] undefined reference to ..
    Bonjour à tous,

    Ben j'ai été entrain d'apprendre à utiliser les sockets sous windows en langage C
    En créant mes premiers programme de test qui sont les suivant :
    serveur:
    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
    */
    #include<windows.h>
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    int main()
    {
        WSADATA WSAData;
        SOCKET sock;
        SOCKET csock;
        SOCKADDR_IN sin;
        SOCKADDR_IN csin;
        WSAStartup(MAKEWORD(2,0), &WSAData);
        sock = socket(AF_INET, SOCK_STREAM, 0);
        sin.sin_addr.s_addr = INADDR_ANY;
        sin.sin_family = AF_INET;
        sin.sin_port = htons(23);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
        listen(sock, 0);
        while(1) /* Boucle infinie. Exercice : améliorez ce code. */
        {
            int sinsize = sizeof(csin);
            if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
            {
                send(csock, "Hello world!\r\n", 14, 0);
                closesocket(csock);
            }
        }
        /* On devrait faire closesocket(sock); puis WSACleanup(); mais puisqu'on a entré une boucle infinie ... */
        return 0;
    }
    Client
    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
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    int main()
    {
        WSADATA WSAData;
        SOCKET sock;
        SOCKADDR_IN sin;
        char buffer[255];
        WSAStartup(MAKEWORD(2,0), &WSAData);
        /* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
        sock = socket(AF_INET, SOCK_STREAM, 0);
        sin.sin_addr.s_addr = inet_addr("62.250.14.6");
        sin.sin_family = AF_INET;
        sin.sin_port = htons(6667);
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        recv(sock, buffer, sizeof(buffer), 0);
        closesocket(sock);
        WSACleanup();
        return 0;
    }
    ça se compile ni s'execute plus les erreurs sont de genre :

    [Linker error] undefined reference to `WSAStartup@8'
    [Linker error] undefined reference to `socket@12'
    .. sont nombreuuux indénobralbles

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Salut,

    Vive Windows !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include<windows.h>
    #include <winsock2.h>
    Avec les includes qui s'incluent, il est préférable de les inclure dans l'ordre inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <winsock2.h>
    #include<windows.h>
    Sinon tu compiles avec quoi ?
    C'est comme si le linker ne savait pas où est ws2_32.lib.

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut Dev-C++
    l'IDE que j'utilise est dev-C++ est je compile avec Compiler par défaut

    c'est réussi par organisation des include Mercii , mais lors de l'exécution il me retourne : cannot find -lobjc

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    tu dois lui dire où est le répertoire de ws2_32.lib
    (peut-être C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib ?)

    Ca doit se configurer quelque part dans dev-c++.

    Pourquoi cet IDE qui n'est plus maintenu par son éditeur depuis 7ans est encore autant utilisé !!!

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    alors puis je comprendre que Codeblocks peut être conseillé ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    C'est mieux, mais pour ton test, dev-c++ avec son (vieux) compilo te suffit.

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    Citation Envoyé par mala92 Voir le message
    tu dois lui dire où est le répertoire de ws2_32.lib
    (peut-être C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib ?)

    Ca doit se configurer quelque part dans dev-c++.

    Pourquoi cet IDE qui n'est plus maintenu par son éditeur depuis 7ans est encore autant utilisé !!!
    Comment puis-je indiquer celà car j'ai pas trouvé déja C:\Program Files\Microsoft SDKs

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    c'est peut-etre quelque part dans un sous répertoire de dev-c++. Fais une recherche de "ws2_32"

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 448
    Par défaut
    « Undefined reference to… » signifie « référence indéfinie à… » et, comme son nom l'indique, cela veut dire que tu appelles des fonctions inconnues. En fait, ce n'est pas le compilateur qui t'envoie cette erreur, mais l'éditeur de liens, chargé de combler a posteriori tous les blancs qui ont été laissés dans le code exécutable final.

    Concrètement, ça veut dire que tu as oublié de passer à ton compilateur les bibliothèques dont tu appelles les fonctions.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/06/2007, 12h34
  2. [Linker error] undefined reference to ..
    Par lichman dans le forum C++
    Réponses: 5
    Dernier message: 15/01/2007, 16h50
  3. Réponses: 1
    Dernier message: 14/11/2006, 11h12
  4. [Linker error] undefined reference to...
    Par z980x dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 15h30
  5. [Linker error] undefined reference to 'IcmpSendEcho@'
    Par Xevious dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 29/12/2005, 16h45

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