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

Boost C++ Discussion :

[Boost.Interprocess] probleme de link ou plutot de newbie


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut [Boost.Interprocess] probleme de link ou plutot de newbie
    Bonjour à tous,

    J'ai bien envie de me mettre à boost, (de remplacer tout ce que je fais avec Qt et que boost sait déjà faire) mais je crois que je suis pas doué :

    (j'utilise boost 1.53, Qt creator 2.4.1, Qt 4.7.4, mingw32 4.4)

    J'aimerais utiliser les shared_memory_object.
    la doc dit que Boost.Interprocess est "header only" et pourtant j'ai des erreurs de link du genre :
    undefined reference to `_imp__VariantClear@4

    la doc dit aussi qu'il y a une dépendance avec Boost.DateTime qui, elle, demande à être compilée.

    Si j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define BOOST_DATE_TIME_NO_LIB
    pour éviter cette dépendance, rien n'y fait : exactement les mêmes erreurs

    D'autre part, ayant compilé les libs, j'ai justement essayé d'utiliser Boost.DateTime, et là, tout fonctionne ! (j'utilise des boost::gregorian::date_period, to_simple_string, ... tout compile et tourne)

    Du coup, là, j'arrive à utiliser des lib qui ont besoin d'être compilées et pas des header-only ... (me trompe-je ?)

    Donc si quelqu'un pouvait enlever la poutre que j'ai dans l'oeil, je vous en serais infiniment reconnaissant !

    PS : pour ceux qui connaissent qmake, voici ce que je met dans le .pro :
    pour les headers : 'INCLUDEPATH += ../libs/boost_1_53_0'
    pour la lib DateTime : 'LIBS += -L"../libs/boost_1_53_0/stage/lib" -lboost_date_time-mgw44-mt-1_53'

    Dans mon fichier cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <boost/interprocess/managed_shared_memory.hpp>
    #include <boost/date_time/gregorian/gregorian.hpp>
    et je n'utilise pas les espaces de noms pour être sûr de ne pas avoir de conflits.


    Quoi qu'il advienne, merci à ceux qui auront eu le courage de me lire !

  2. #2
    Membre émérite
    Homme Profil pro
    R&D imagerie 3D / prog embarquée
    Inscrit en
    Mars 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : R&D imagerie 3D / prog embarquée
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2007
    Messages : 419
    Par défaut
    Salut,

    Boost.DateTime est un package hybride. Certaines fonctions sont définies dans le hpp et d'autres sont compilées dans les lib. Si tu dépends uniquement des fonctionnalité du hpp, tu peux définir BOOST_DATE_TIME_NO_LIB et ne pas linker la lib. Mais visiblement c'est pas ton cas. Tu dois donc obligatoirement linker la lib

    Un consiel, Boost c'est vraiment gros, donc n'hésites pas à utiliser bcp pour extraire un ou des sous-modules. Ça t'évitera de pourrir ton système de versionnage et tes workspaces.
    Tu l'as compilé avec boost. Il est dans le dossier tools/bcp si je me souviens bien.

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut
    Salut djuju, merci de ta réponse (surtout à 2h du mat' )

    BCP, c'est trop bien et je ne connaissais pas du tout !
    comme quoi, j'ai de quoi apprendre avant d'avoir une vision globale des outils fournis par boost !

    Par contre, rien de neuf :
    • j'ai demandé à BCP les dépendances de "managed_shared_memory.hpp" (option --report qui crée un html) et il m'a bien confirmé comme la doc : aucune dépendance, rien à signaler

    • j'ai demandé à BCP de m'exporter tout ce qu'il faut pour utiliser interprocess, il m'a crée un joli dossier avec, en effet, que des .hpp. Je me sers de ce nouveau dossier dans mon code et ... même problème ...


    Note : En fait, je me moque de Boost.DateTime, j'ai juste voulu voir si j'arrivais à la linker puisque la doc disait que interprocess dépendais d'elle (du moins si BOOST_DATE_TIME_NO_LIB n'est pas défini)

    En tous cas, merci beaucoup, je veux sûrement aller trop vite car mon problème doit vraiment pas être méchant...
    Je vais pousser plus loin mes investigations avant de vous redéranger !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut
    bon ba, à force de lire la doc, j'ai enfin trouvé :

    http://www.boost.org/doc/libs/1_53_0...nts_notes.html

    où ils expliquent que la dépendance est spécifique à windows :
    Boost.Interprocess uses the Windows COM library to implement some features
    donc, fallait lier les libs ole32 et oleaut32 ... mea culpa ...
    maintenant tout roule !


    mais, si je puis me permettre, je pense qu'il y a pas mal de flemmards comme moi :
    on va voir la doc, au tout début il y a un chapitre build, on va voir, ils disent "pas la peine de compiler, t'inclus le .hpp et roule ma poule".
    Moi j'y crois, je me dis même c'est super ça !
    Et en fait, à la toute fin, t'as un chapitre "Aknowledgements" et là, ils disent "bon, bien sûr, pour les windowsiens faut galérer un peu plus "!

    Bon, OK, j'ai la critique facile ... j'ai fait mon bras cassé, j'avoue

    donc, longue vie à Boost et à developpez

    (et encore merci djuju)

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

Discussions similaires

  1. probleme de link
    Par Volazara dans le forum MFC
    Réponses: 1
    Dernier message: 22/12/2005, 14h26
  2. [MFC]probleme de link
    Par benahpets dans le forum MFC
    Réponses: 4
    Dernier message: 12/08/2005, 09h56
  3. [newbie][virtual] probleme de link
    Par BainE dans le forum MFC
    Réponses: 1
    Dernier message: 01/06/2005, 17h21
  4. probleme de link avec visual studio .net 2003
    Par kamal101 dans le forum MFC
    Réponses: 9
    Dernier message: 28/03/2005, 21h44
  5. [dev-cpp] probleme de link
    Par alex1er dans le forum Dev-C++
    Réponses: 5
    Dernier message: 20/01/2005, 17h41

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