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

Dev-C++ Discussion :

winsock.h : undefined reference...


Sujet :

Dev-C++

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut winsock.h : undefined reference...
    bonjour,
    j'ai écrit un petit bout de code qui utilise winsock.h
    la compilation marche parfaitement mais dans le "linker" il m'écrit:
    c:\mes documents\connec.o(.text+0x37):connec.c: undefined reference to `WSAStartup@8'
    c:\mes documents\connec.o(.text+0x48):connec.c: undefined reference to `socket@12'
    c:\mes documents\connec.o(.text+0x60):connec.c: undefined reference to `inet_addr@4'
    c:\mes documents\connec.o(.text+0x81):connec.c: undefined reference to `htons@4'
    c:\mes documents\connec.o(.text+0xa5):connec.c: undefined reference to `connect@12'
    c:\mes documents\connec.o(.text+0xbd):connec.c: undefined reference to `send@16'
    c:\mes documents\connec.o(.text+0xcc):connec.c: undefined reference to `closesocket@4'
    c:\mes documents\connec.o(.text+0xd4):connec.c: undefined reference to `WSACleanup@0'
    j'ai essayé en faisant #include <windows.h> au lieu de winsock.h, mais ça ne change rien
    quelqu'un peut-il m'aider?
    merci d'avance

  2. #2
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    c une erreur de linker (ou de lieur en francais ).
    Ton prob n'est pas un prob d'include mais de lib.
    Pour resoudre le problème il fo aller dans les proprietes du compilateur

    dans ajouter ces commandes lors de l'edition des liens il fo rajouter une ligne du type
    -lwsock ou -lws_32 (respectivement winsock et winsock2).

    Plus generalement c -l(nomdelalibraire sans lib et sans extension).

    ZUL

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Je relance ce (très très) vieux topic car j'ai un problème de lieur sous Dev-Cpp.

    J'ai récupéré une DLL (FTD2XX.dll) ainsi que le .h qui va avec. J'ai créé un projet dans Dev-Cpp, ça compile impeccable mais j'ai un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      [Linker error] undefined reference to `_imp__FT_ListDevices@12'
    Le problème c'est que je n'ai pas la librairie d'importation. Je l'ai donc refaite ainsi que le .def (libFTD2XX.a et libFTD2XX.def) à l'aide de dlltools.exe, fourni avec Dev-Cpp et ajouté au lieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -L C:\le_dossier_du_main.cpp -lFTD2XX
    Mais rien n'y fait j'ai toujours cette erreur... J'ai aussi un fichier FTD2XX.lib que l'on m'a fourni mais je ne sais qu'en faire...

    Merci d'avance
    ++

  4. #4
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Le problème c'est que je n'ai pas la librairie d'importation.
    Ceci est une library d'importation dynamique:
    J'ai récupéré une DLL (FTD2XX.dll)
    As tu ajouté ta dll dans les options du compilateur?
    (projet -> options du projet -> onglet "paramètres" (éditeur de liens)

    As tu bien spécifié le chemin de ton fichier d'entête dans le répertoire d'inclusion? (dans l'onglet "répertoire")

    As tu bien aussi ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <TonFichierDeclaration.h>

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Salut

    As tu ajouté ta dll dans les options du compilateur?
    Oui, c'est le bout de code que j'ai fourrni :
    Code:

    -L C:\le_dossier_du_main.cpp -lFTD2XX
    Mais est-ce la bonne méthode ???

    Sinon oui j'ai bien mis le bon répertoire et le bon include... Je n'ai pas d'erreur de fichier "not find".

    ++

  6. #6
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Dans ton makefile:
    La ligne suivante, j'ai l'impression qu'elle n'est pas juste(manque les tilts, utilisation d'anti slash...):
    -L C:\le_dossier_du_main.cpp -lFTD2XX
    Je ferais cela:
    LIBS = -L"lib" -L"H:/chemin_librarie/..." libFTD2XX.a -g3
    INCS = -I"include" -I"H:/chemin fichier entête/..."
    CFLAGS = $(INCS) -lFTD2XX -g3
    Mais au fond, si tu paramètres bien ton compilateur, tu ne dois pas avoir besoin de modifier manuellement le makefile...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Nop toujours cette même erreur...

    Mais au fond, si tu paramètres bien ton compilateur, tu ne dois pas avoir besoin de modifier manuellement le makefile...
    Mais y a t-il un moyen de rajouter simplement une dll ? Ou faut-il rajouter ces lignes au Makefile ?

    Sinon mon problème peut peut-être venir du fichier .a que j'ai dû générer à l'aide de DllTools.exe
    Et à propos de mon .lib ? Il sert à qqchose ??

    Merci
    ++

  8. #8
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Ou faut-il rajouter ces lignes au Makefile ?
    Non.

    Mais y a t-il un moyen de rajouter simplement une dll ?
    Oui.
    Bien faut faire déjà ce que je t'ai proposé dans le premier post:
    As tu ajouté ta dll dans les options du compilateur?
    (projet -> options du projet -> onglet "paramètres" (éditeur de liens)
    As tu bien spécifié le chemin de ton fichier d'entête dans le répertoire d'inclusion? (dans l'onglet "répertoire")
    Et aussi:
    projet -> options du projet -> onglet "paramètres" (compilateur), ajouter la commande de compilation pour la library.

    Sinon mon problème peut peut-être venir du fichier .a que j'ai dû générer à l'aide de DllTools.exe
    Je ne connais pas, désolé.

    Et à propos de mon .lib ? Il sert à qqchose ??
    Toujours une librairie mais avec une autre extension.
    A toi de choisir laquelle tu utilises.

    Dis moi ce qu'il en est après tout cela.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Re !

    Bon comme je bloque pour une erreur bidon (c'est sûr ), je vais essayer d'être le plus clair possible et de tout reprendre car je viens de tester sous GNU/Linux et ça marche sans aucun problème en utilisant simplement un ftd2xx.h et un .so qui lui est associé.

    SOUS GNU/LINUX (ça marche ):

    Fichier main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
    #include "../ftd2xx.h"
     
    int main()
    {
      [...]
    }
    Le Makefile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CC=gcc
    CFLAGS=-L. -lftd2xx -Wl,-rpath /usr/local/lib
    APP = simple
     
    all: $(APP)
     
    $(APP): main.c	
    	$(CC) -o $(APP) $(CFLAGS) main.c
    SOUS WINDOWS (avec Dev-Cpp) ça ne marche pas :

    J'ai un FTD2XX.H, un FTD2XX.dll et un FTD2XX.lib (je sais pas à quoi il sert !) et donc pas de fichier .a .
    main.cpp :
    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
    #include <cstdlib>
    #include <iostream>
     
    #include <windows.h> // define different 'type' use by D2xx driver
    #include <ftdi/FTD2XX.H>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        FT_STATUS ftStatus;
        DWORD numDevs;
     
        ftStatus = FT_ListDevices(&numDevs, NULL, FT_LIST_NUMBER_ONLY);
        if (ftStatus == FT_OK)
           printf("ok, number of device(s) : %i\r\n", numDevs);
        else
            printf("no\r\n");
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    A la compilation pas de problème mais l'éditeur de lien me balance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      [Linker error] undefined reference to `_imp__FT_ListDevices@12'
    J'ai bien essayé d'ajouter des "options" à l'éditeur de liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -L"lib" -L"C:/le_bon_rep" -g3 -I"include" -I"C:/le_bon_rep" -lFTD2XX
    mais pas de changement...

    Comment fait-on pour utiliser une dll sous Windows ? Doit-on obligatoirement passer par un .a (j'ai essayer d'en générer un à partir de la dll mais rien) ? à quoi sert ce fichu .lib ?

    Merci d'avance
    ++Etienne

  10. #10
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    FTD2XX.lib (je sais pas à quoi il sert !)
    Si tu utilises la dll, ici, ca ne te servira pas, c'est une bibliothèque à édition de lien statique, comme un ".a".

    Doit-on obligatoirement passer par un .a
    non sauf si tu veux lier statiquement, par exemple pour une application en embarqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <ftdi/FTD2XX.H>
    A quel emplacement se situe le répertoire tfdi?
    Est il dans le répertoire include de DevC++?

    J'y pense, si tu as fait comme dit dans les options de compilation tu dois déclarer include ainsi:

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Oui il est dans le bon repertoire (pas de "not find" ni d'erreur de compilation)...

  12. #12
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Peux tu essayer en modifiant l'include comme j'ai rajouté à la fin de mon précédent post?

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    J'ai tout mis dans le C:\Dev-Cpp\include (dll et .H) avec les options de l'éditeur de liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -L"lib" -L"C:/Dev-Cpp/Projects/FTDI_Console" -g3 -I"include"
    -I"C:/Dev-Cpp/Projects/FTDI_Console" -lFTD2XX
    Mais toujours rien !!!! J'ai viré les libFTD2XX.a et libFTD2XX.lib (que j'avais créé avec DllTools) ça ne change rien non plus... Sur quoi se base le -lFTD2XX ? la dll ?

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    OK bon bin c'est RéSOLU !

    En réalité il faut linker le .lib donc simplement ajouter
    dans les options de l'éditeur de liens, comme quoi effectivement c'était une erreur bidon...

    Merci homeostasie pour ta patience


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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Points : 51
    Points
    51
    Par défaut
    ou puis je trouver l'editeur des liens dans dev-cpp

Discussions similaires

  1. [debutant] compilation g++ : undefined reference
    Par xavlours dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2005, 15h49
  2. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

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