Je ne peux pas faire fonctionner ça. J'ai créé une application console simple (qui dépend de la websocket++
bibliothèque) qui a besoin de Boost
bibliothèques .. mais quand j'essaye de compiler, j'obtiens:
erreur fatale LNK1104: impossible d'ouvrir le fichier 'libboost_system-vc110-mt-gd-1_51.lib'
Cependant, j'ai fait le bjam qui a créé la lib in (boost_root)/stage/libs
et j'ai lié le chemin vers les libs au compilateur C++/Additionnals includes
.
Si je regarde dans (boost_root)/stage/libs
le fichier libboost_system-vc110-mt-gd-1_51.lib
n'est pas là. Il est appelé à la libboost_system-vc110-mt-sgd-1_51.lib
place.
Une idée?
VS2012 developer command prompt
, accédez au répertoire racine de votre boost et tapezbootstrap
, puis tapezb2
et vous devriez obtenir un ensemble complet de fichiers de bibliothèque./MD
?Réponses:
Le paramètre C ++ → Général → Additional Inclure les répertoires sert à répertorier les répertoires dans lesquels le compilateur recherchera les fichiers d'en-tête.
Vous devez indiquer à l'éditeur de liens où rechercher les bibliothèques vers lesquelles créer un lien. Pour accéder à ce paramètre, cliquez avec le bouton droit sur le nom du projet dans la fenêtre Explorateur de solutions , puis Propriétés → Éditeur de liens → Général → Répertoires de bibliothèques supplémentaires . Entrez
<boost_path>\stage\lib
ici (c'est le chemin où se trouvent les bibliothèques si vous construisez Boost en utilisant les options par défaut).la source
C'est le moyen le plus simple pour un amateur comme moi qui étudie seul le C ++:
Décompressez d'abord la bibliothèque boost dans n'importe quel répertoire de votre choix. Je recommande
c:\directory
.c:\boost_1_57_0
.Ensuite, accédez à la bibliothèque de liens où vous avez rencontré vos problèmes.
c:\boost_1_57_0
.booststrap.bat
(ne prenez pas la peine de taper dans la fenêtre de commande, attendez simplement et ne fermez pas la fenêtre où j'ai eu mon problème qui m'a pris deux semaines à résoudre. Après un certain temps, lebooststrap
lancera et produira le même fichier, mais maintenant avec deux noms différents:,b2
etbjam
.b2
et attendez qu'il s'exécute.bjam
et attendez qu'il s'exécute. Ensuite, un dossier sera produit appeléstage
.c:\boost_1_57_0\stage\lib
.Et vous êtes prêt à partir!
la source
bootstrap.bat
(cela a pris 10 à 20 secondes); d) tapez./b2
comme indiqué (il a ensuite fallu 30 à 40 minutes).J'ai eu le même problème. Cela a été causé parce que j'ai compilé le Boost avec le Visual C ++ 2010 (v100) et j'ai essayé d'utiliser la bibliothèque avec le Visual Studio 2012 (v110) par erreur.
Donc, j'ai changé les configurations (dans Visual Studio 2012) en allant dans Propriétés du projet -> Général -> Plataform Toolset et changez la valeur de Visual Studio 2012 (v110) en Visual Studio 2010 (v100) .
la source
Encore une autre solution:
J'étais perplexe parce que j'incluais boost_regex-vc120-mt-gd-1_58.lib dans ma propriété Link-> Additional Dependencies, mais le lien n'arrêtait pas de me dire qu'il ne pouvait pas ouvrir libboost_regex-vc120-mt-gd-1_58.lib ( notez le préfixe lib). Je n'ai pas spécifié libboost_regex-vc120-mt-gd-1_58.lib.
J'essayais d'utiliser (et j'avais construit) les bibliothèques dynamiques boost (.dlls) mais je n'avais pas défini la macro BOOST_ALL_DYN_LINK. Apparemment, il y a des astuces dans la compilation pour inclure une bibliothèque, et sans BOOST_ALL_DYN_LINK, il recherche la bibliothèque statique (avec le préfixe lib), pas la bibliothèque dynamique (sans préfixe lib).
la source
J'ai eu le même problème et mon erreur a été d'avoir installé le binaire boost_1_55_0-msvc-11.0-32.exe à utiliser avec visual c ++ 2010 qui a la version v100 (propriétés du projet-> ConfiguratioProperties-> Général-> platformTooset) pas v110 comme visual c ++ 2012. J'ai donc téléchargé boost_1_55_0-msvc-10.0-32.exe et maintenant tout va bien jusqu'à présent.
la source
Au cas où vous auriez du mal à construire boost ou préférez ne pas le faire, une alternative est de télécharger les fichiers lib depuis SourceForge . Le lien vous mènera à un dossier de fichiers lib et dll compressés pour la version 1.51. Mais vous devriez pouvoir modifier le lien pour spécifier la version de votre choix. Apparemment, le programme d'installation de BoostPro a quelques problèmes.
la source
J'ai eu un problème similaire en essayant d'utiliser les tests unitaires boost dans Visual Studio 2015 (Community Edition):
alors j'ai pensé partager ma solution.
Vous pouvez créer un projet de test unitaire boost de deux manières (et cette solution fonctionne pour les deux):
Voici les étapes que j'ai suivies pour que les deux projets fonctionnent:
Tout d'abord, téléchargez la version boost souhaitée (par exemple, boost_1_57_0 ). Vous pouvez soit télécharger boost avec les binaires corrects (compilés à l'aide de msvc v140), soit extraire les binaires vous-même en exécutant les commandes suivantes à partir de la ligne de commande:
Où msvc-14.0 spécifie que nous avons besoin de la version Visual Studio 2015 (VS 2015 = v14.0 = v140), et address-model = 32 spécifie que nous avons besoin de la plate-forme 32 (mais la même chose peut être faite pour 64 bits).
Une fois que vous avez les binaires, accédez à Visual Studio, sélectionnez le projet Boost Unit Testing que vous avez créé. Allez dans Propriétés du projet> configuration (à partir du menu principal) et effectuez les choix suivants:
Définissez « Général> Platform Toolset » sur Visual Studio 2015 (v140).
Incluez le chemin vers le dossier boost (par exemple C: \ boost_1_57_0) et le chemin vers le sous-dossier contenant les fichiers binaires (par exemple C: \ boost_1_57_0 \ stage \ lib) dans:
la source
b2 -j% cores% toolset =% msvcver% address-model = 64 architecture = x86 link = static threading = multi runtime-link = shared --build-type = minimal stage --stagedir = stage / x64
Propriétés → Éditeur de liens → Général → Répertoires de bibliothèques supplémentaires $ (BOOST) \ stage \ x64 \ lib
la source
J'ai eu le même problème signalé ici. J'ai résolu le problème en déplaçant le mainTest.cpp d'un sous-dossier src / mainTest / vers le dossier principal src / Je suppose que c'était aussi votre problème.
la source
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
Dans mon cas, bootstrap / bjam n'était pas disponible (les bibliothèques étaient précompilées et validées dans SCM) sur l'ancien projet hérité. Les bibliothèques n'avaient pas de versioning VC ou BOOST dans leurs noms de fichiers, par exemple:,
libboost_regex-mt-sgd.lib
cependant, elles seProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
sont déclenchées automatiquement.Correction en ajoutant manuellement le nom de fichier sans version à:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
et listes noires l'
...vc120-mt-sgd-1_55.lib
en<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
la source