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

Visual C++ Discussion :

D�tection de probl�mes de link inexistants


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 26
    Par d�faut D�tection de probl�mes de link inexistants
    Bonjour,

    Je rencontre un probl�me assez �trange en voulant linker mon programme sous Visual C++ 2008. Il me sort des erreurs me disant que certains symboles de boost::filesystem::path sont d�j� d�finis ailleurs, dans une autre librairie. Bien �videmment, cela est compl�tement faux. D'ailleurs le probl�me n'appara�t que si je lie dynamiquement avec Boost, statiquement, tout est OK.

    Pour l'instant je m'en sors en ajoutant /FORCE:MULTIPLE � mes options de link, mais je ne consid�re pas �a comme une solution correcte car cela pourrait occulter un jour de v�ritables erreurs.

    Auriez-vous des indications sur ce probl�me ? Merci

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Citation Envoy� par Tan Phi Voir le message
    que certains symboles de boost::filesystem::path sont d�j� d�finis ailleurs, dans une autre librairie. Bien �videmment, cela est compl�tement faux.
    Vous faites une grossi�re erreur, ce type de probl�me a toujours pour source un truc entre la chaise et le clavier.

    Normalement, le linker indique les fichiers lib ou obj qui contient les choses en conflits.

    C'est quoi pr�cis�ment le message d'erreur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 26
    Par d�faut
    Il s'agit d'une erreur LNK2005. Je n'ai pas le message en t�te comme �a (et je ne suis pas au boulot pour vous le poster tout de suite), mais pour r�sumer, le message indique que boost::filesystem::~path est d�j� d�fini dans Runtime.obj, cet objet faisant partie d'une autre librairie d�velopp�e en interne par ma bo�te.

    M�me probl�me ensuite avec boost::filesystem::string. En debug, il y en a un troisi�me qui appara�t, mais j'ai oubli� lequel.

    En �crivant ces mots, je pense avoir devin� le probl�me : Boost.Filesystem doit �tre li� statiquement � cette librairie interne. Mon programme qui utilise cette librairie, ainsi que filesystem directement (mais li� dynamiquement), y voit donc une double d�finition.

    Cela transforme un peu ma question et sort du cadre du forum VC++, mais je pose au cas o� : comment faire comprendre � CMake qu'on veut lier statiquement boost, sauf une librairie (en l'occurence Boost.Thread) ? La variable Boost_USE_STATIC_LIBS ne permet que de faire tout l'un ou tout l'autre. J'ai tent� de d�finir BOOST_THREAD_DYN_LINK pour le pr�processeur, mais �a n'a pas fonctionn�.

    Pour r�pondre tout de suite � la question de pourquoi je fais un truc pareil, c'est parce que malheureusement, j'ai des MFC un peu partout dans le programme. Boost.Thread li� statiquement avec les MFC pose des probl�mes, mais dynamiquement c'est OK (cf http://www.juicydata.com/LinkingMfcAndBoostThread).

    J'ai bien conscience que la meilleure solution serait de prendre le temps de virer tous les MFC, mais �a prendrait trop de temps et mon employeur ferait les gros yeux. ;-)

    Merci en tout cas de vous pencher sur mon probl�me.

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Heu, pourquoi ne pas faire de Runtime une Dll ?

    P.S.: Une dette technique, faut toujours la payer, alors virer les MFC si vous n'en avez pas besoin.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 26
    Par d�faut
    Oui j'y ai pens� apr�s avoir post� mon dernier message. C'est s�r que �a devrait marcher. La seule chose qui me retient de le faire n'est pas un probl�me technique, mais un probl�me de travail en �quipe. En faisant cela, je vais aller � l'encontre de la pratique courante dans ma bo�te (ce sera m�me � ma connaissance un cas unique) et comme je ne serai pas le mainteneur de ce projet, �a ne fera qu'amener de la confusion chez les autres. Autant aller vers le plus simple et le plus facile � maintenir.

    Je pense que je vais aller voir mon chef et tenter de le convaincre que l'effort de virer les MFC en vaut la peine.

    Je passe la discussion en r�solue. Apr�s tout ma question initiale l'est. ;-)
    Merci en tout cas d'avoir r�fl�chi � mon probl�me.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Flush hosts et d�tection de probl�me
    Par psychomatt dans le forum Requ�tes
    R�ponses: 4
    Dernier message: 20/07/2005, 14h39
  2. Probl�me de link...
    Par Royd938 dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 30/09/2004, 17h33
  3. C/asm : probl�me pour link
    Par SteelBox dans le forum Autres �diteurs
    R�ponses: 3
    Dernier message: 06/04/2004, 23h03
  4. Probl�me de LINK Bizarre !!
    Par Jasmine dans le forum MFC
    R�ponses: 24
    Dernier message: 19/03/2004, 15h58
  5. Probl�me de link avec Borland C++ 5.5
    Par gelam dans le forum Autres �diteurs
    R�ponses: 5
    Dernier message: 24/11/2003, 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