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
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    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 chevronn� 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
    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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 �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    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�.

    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

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

  12. #12
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

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

  13. #13
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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
    Membre � l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    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 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
    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