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

C++ Discussion :

Boost et Visual Studio 2008


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 43
    Points
    43
    Par défaut Boost et Visual Studio 2008
    Bien le bonjour !

    J'ai un petit soucis, le voici en détails.
    J'ai compilé Boost Python (boost en version 1_45). Me voilà donc avec 4 jolies lib.

    Dans un projet visual c++, j'ai configuré le répertoire d'include et de lib correctement et j'ai ajouté le nom de mes libs dans les dépendances supplémentaires. J'écris un simple petit code de test sans prétention et à la compilation, on m'indique le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'boost_python-vc90-mt-1_45.lib'
    Ce qui m'embête c'est que dans les dépendances supplémentaires tout comme dans mon dossier de lib, je n'ai absolument par cette lib mais : libboost_python-vc90-mt-1_45.lib

    Va savoir pourquoi, Visual s'efronte à vouloir ouvrir boost_python-vc90-mt-1_45.lib et non libboost_python-vc90-mt-1_45.lib.

    Donc déjà là petit soucis.
    Au cas où, j'ai changé le nom de la lib en boost_python-vc90-mt-1_45.lib (donc sans le "lib" devant). Et cette fois, il me dit qu'il n'arrive pas à ouvrir libboost_python-vc90-mt-1_45.lib (donc avec le "lib").

    Du coup, je sais pas quoi faire, mon visual studio se moquerait il de moi ? :/

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Boost utilise une fonctionnalité d'autolink, qui signifie qu'il va tout seul ajouter les bibliothèques qui vont bien au projet. Et qu'il va déterminer leur nom automatiquement en fonction des options de compilation du code.

    Donc, ce qu'il faut faire :
    - Enlever les bibliothèques que tu as ajoutées manuellement à ton projet
    - Comprendre pourquoi par défaut il veut du libboost alors que tu as du boost. Regarde en particulier http://www.boost.org/doc/libs/1_45_0...library-naming

    A priori, tu n'as pas les mêmes options de compilation multithread entre ton programme et boost.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    exactement le lien que je cherchais!
    à ce propos j'ai une question quand on parle de librairie mulithreading, qu'est ce que ça signifie exactement? une librairie qui est thread-safe ? autre chose ?

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Cela signifie que quelques bibliothèques de base de visual studio seront thread safe (par exemple, les bibliothèques d'allocation mémoire) au prix d'un léger ralentissement. Cela ne signifie en rien par exemple sur l'accès à un vector depuis 2 threads : C'est et ça restera à protéger de ton côté et non pas par la bibliothèque (et tant mieux).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Cela signifie que quelques bibliothèques de base de visual studio seront thread safe (par exemple, les bibliothèques d'allocation mémoire) au prix d'un léger ralentissement. Cela ne signifie en rien par exemple sur l'accès à un vector depuis 2 threads : C'est et ça restera à protéger de ton côté et non pas par la bibliothèque (et tant mieux).
    ok ty

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Merci JolyLoic, tu m'a appris plusieurs choses intéressantes.

    Au niveau du nommage à priori, les lib boost sous Windows sont sensés ne pas être préfixés du "lib". Voilà pourquoi à mon avis mon Visual s'attends à avoir une lib sans le préfixe. Par contre ce qui m'étonne c'est que la compilation de Boost par le compilateur msvc a généré des lib avec le suffixe "lib".

    J'ai aussi remarqué que la simple compilation de Boost sans option ne m'avait créé que des lib en multi threading alors que mon application est configurée en MD (DLLMultiThread semble t'il).

    Je re compile Boost complètement voir ce que ça donne.

    Merci beaucoup en tout cas =)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Bien, maintenant semble t'il qu'une lib est bien utilisée mais j'ai des erreurs à la compilation de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1>PluginManager.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) public: __thiscall boost::python::handle<struct _object>::~handle<struct _object>(void)" (__imp_??1?$handle@U_object@@@python@boost@@QAE@XZ)
    1>PluginManager.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) class boost::python::api::object __cdecl boost::python::api::getattr(class boost::python::api::object const &,char const *)" (__imp_?getattr@api@python@boost@@YA?AVobject@123@ABV4123@PBD@Z)
    1>PluginManager.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) void __cdecl boost::python::throw_error_already_set(void)" (__imp_?throw_error_already_set@python@boost@@YAXXZ)
    1>PluginManager.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) public: __thiscall boost::python::api::object::object(class boost::python::handle<struct _object> const &)" (__imp_??0object@api@python@boost@@QAE@ABV?$handle@U_object@@@23@@Z)
    N'aurais-je pas encore la bonne lib ? un petit quelque chose à configurer ?

    EDIT : En effet, il me manquait surement la version DLL, qui est celle souhaité par mon projet. Hop je passe ça en résolu =)

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

Discussions similaires

  1. Que pensez-vous de visual studio 2008 ?
    Par Louis-Guillaume Morand dans le forum Visual Studio
    Réponses: 36
    Dernier message: 17/11/2009, 03h41
  2. Boost.Test 1.36 et Visual Studio 2008 : bug ?
    Par Matthieu Brucher dans le forum Boost
    Réponses: 4
    Dernier message: 31/08/2008, 20h32
  3. IronPython & visual studio 2008
    Par anthyme dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 13/06/2008, 14h50
  4. Visual Studio 2008 RTM
    Par The_badger_man dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 24/12/2007, 03h06
  5. Visual Studio 2008 BETA 2 [Intellisense]
    Par domdax dans le forum C#
    Réponses: 4
    Dernier message: 17/09/2007, 09h50

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