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

Bibliothèques Discussion :

Problèmes d'ajout de dépendances pour la bibliothèque sockpp


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Points : 23
    Points
    23
    Par défaut Problèmes d'ajout de dépendances pour la bibliothèque sockpp
    Bonjour,

    J'ai voulu tester cette petite bibliothèque de socket : https://github.com/fpagliughi/sockpp sous l'environnement de travail Visual Studio 2019 sous win10.

    J'ai donc clone le projet, utilisez cmake pour le monter en préparant une sortie en lib statique mais aussi dynamique ( dll ) puis direction vs2019 pour générer le projet en respectant la norme de langage demandé ( c++14 minimum ) comme précisé dans la doc. Jusqu'à la aucun problème tout se déroule normalement.

    je créais un projet console juste derrière et récupère cet exemple : https://github.com/fpagliughi/sockpp...tcpechosvr.cpp pour vérifier que tout fonctionne correctement.

    Je link bien entendu dans les options de configuration du projet la .lib généré précédemment suite au cmake + build dans vs2019 : ( éditeur de liens -> entrée : sockpp-static.lib ), je renseigne également ( éditeur de liens -> général ) : le répertoire de bibliothèques supplémentaires ou se situe la .lib

    Je met en place les headers de cette bibliothèque dans mon projet, je démarre la génération du projet en console et voici la sortie de ma console d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    1>server.cpp
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_bind référencé dans la fonction "public: bool __cdecl sockpp::socket::bind(class sockpp::sock_address const &)" (?bind@socket@sockpp@@QEAA_NAEBVsock_address@2@@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_closesocket référencé dans la fonction "private: bool __cdecl sockpp::socket::close(unsigned __int64)" (?close@socket@sockpp@@AEAA_N_K@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_ioctlsocket référencé dans la fonction "public: bool __cdecl sockpp::socket::set_non_blocking(bool)" (?set_non_blocking@socket@sockpp@@QEAA_N_N@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_getpeername référencé dans la fonction "public: class sockpp::sock_address_any __cdecl sockpp::socket::peer_address(void)const " (?peer_address@socket@sockpp@@QEBA?AVsock_address_any@2@XZ)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_getsockname référencé dans la fonction "public: class sockpp::sock_address_any __cdecl sockpp::socket::address(void)const " (?address@socket@sockpp@@QEBA?AVsock_address_any@2@XZ)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_getsockopt référencé dans la fonction "public: bool __cdecl sockpp::socket::get_option(int,int,void *,int *)const " (?get_option@socket@sockpp@@QEBA_NHHPEAXPEAH@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_setsockopt référencé dans la fonction "public: bool __cdecl sockpp::socket::set_option(int,int,void const *,int)" (?set_option@socket@sockpp@@QEAA_NHHPEBXH@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_shutdown référencé dans la fonction "public: bool __cdecl sockpp::socket::shutdown(int)" (?shutdown@socket@sockpp@@QEAA_NH@Z)
    1>sockpp-static.lib(socket.obj) : error LNK2019: symbole externe non résolu __imp_socket référencé dans la fonction "public: static class sockpp::socket __cdecl sockpp::socket::create(int,int,int)" (?create@socket@sockpp@@SA?AV12@HHH@Z)
    1>sockpp-static.lib(stream_socket.obj) : error LNK2001: symbole externe non résolu __imp_socket
    1>sockpp-static.lib(connector.obj) : error LNK2001: symbole externe non résolu __imp_socket
    Je n'ai mit qu'une partie des erreurs étant donné que le reste est similaire. Je comprend bien qu'il y ait une erreur avec le linker de ma lib ou ma lib elle même mais, j'ai du mal a situé exactement le problème pour le corriger et la façon de le diagnostiquer précisément.

    Est-ce :

    - Des erreurs de la lib elle même, qui est mal générée suite au cmake au départ ?
    - Des erreurs dans l'inclusion au projet de cette dernière ? Aie-je oublié des choses ?

    Comment procéder par étape pour diagnostiquer et régler le problème ?

    Merci par avance.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Salut !

    Je ne vais pas répondre à ta question... Moi, je ne suis pas arrivé à l'étape de link, j'ai déjà des tonnes d'erreur à la compilation, simplement avec #include "sockpp/tcp_acceptor.h", telles que :

    C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\ws2def.h(103): warning C4005: 'AF_IPX'ÿ: red‚finition de macro
    C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock.h(457): note: voir la d‚finition pr‚c‚dente de 'AF_IPX'
    C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\ws2def.h(147): warning C4005: 'AF_MAX'ÿ: red‚finition de macro
    C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock.h(476): note: voir la d‚finition pr‚c‚dente de 'AF_MAX'
    C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\ws2def.h(185): warning C4005: 'SO_DONTLINGER'ÿ: red‚finition de macro
    J'utilise la release 0.7.

    Au final tu as réussi à faire fonctionner le truc ? La lib a l'air cool, mais là, ça commence mal...


    EDIT : au temps pour moi, j'avais une inclusion de <Windows.h> au-dessus, et donc j'avais l'erreur décrite ici : https://stackoverflow.com/questions/...les-winsock2-h

    Maintenant, j'ai des erreurs de link XD

    EDIT 2 : j'ai résolu une partie des erreurs en ajoutant ws2_32.lib comme dit ici https://www.developpez.net/forums/d1...ne-non-resolu/

    Mais c'est pas fini...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Salut,

    Oui j'ai réussi. Il suffit de lier la lib de socket windows comme tu l'as fait.

    En lisant la documentation windows en reprenant la première erreur en sortie de console dans mon cas à propos de la fonction "bind" https://docs.microsoft.com/en-us/win...f-winsock-bind, tu ajoutes ceci dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <winsock2.h>
    #include <ws2tcpip.h>
     
    #pragma comment(lib, "Ws2_32.lib")
    Tu compiles ( en configurant comme il faut ton linker dans mon cas, j'ai généré une lib static ) et l'affaire est réglé.

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Au final, j'ai abandonné et j'ai directement utilisé l'API de Winsock2

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2014, 11h32
  2. Réponses: 0
    Dernier message: 21/05/2011, 09h54
  3. Réponses: 2
    Dernier message: 08/12/2010, 12h59
  4. Réponses: 9
    Dernier message: 05/12/2007, 13h14
  5. [Debutant] Problème d'ajout de la lib ssh2 pour PHP sous RH ES 4
    Par Jonathan.b dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 06/11/2007, 14h51

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