Apparemment, je ne peux pas faire en sorte que ça fonctionne. J'ai créé une application console simple (qui dépend de la bibliothèque websocket++
) qui nécessite des bibliothèques Boost
.. mais lorsque j'essaie de compiler, je reçois:
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 bibliothèque dans (boost_root)/stage/libs
et j'ai lié le chemin d'accès aux bibliothèques au compilateur C++/Additionnals includes
.
Si je regarde dans (boost_root)/stage/libs
, le fichier libboost_system-vc110-mt-Gd-1_51.lib
n'y est pas. Il s’appelle plutôt libboost_system-vc110-mt-sgd-1_51.lib
.
Une idée?
Le paramètre C++ → Général → Répertoires d'inclusion supplémentaires sert à répertorier les répertoires dans lesquels le compilateur va rechercher les fichiers d'en-tête.
Vous devez indiquer à l'éditeur de liens où rechercher les bibliothèques auxquelles vous souhaitez créer un lien. Pour accéder à ce paramètre, cliquez avec le bouton droit de la souris sur le nom du projet dans la fenêtre Solution Explorer, puis sur Propriétés → Éditeur de liens → Général → Autres répertoires de bibliothèque. 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).
C'est la manière la plus simple pour un amateur comme moi d'étudier le C++ par leurs propres moyens:
Commencez par décompresser la bibliothèque boost dans le répertoire de votre choix. Je recommande c:\directory
.
c:\boost_1_57_0
.Ensuite, allez à 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 et ne fermez pas la fenêtre qui est l'endroit où j'ai eu mon problème et qui m'a pris deux semaines à résoudre. Au bout d'un moment, la booststrap
s'exécutera et produira le même fichier, mais avec deux noms différents: b2
et bjam
.b2
et attendez qu'il soit exécuté.bjam
et attendez qu'il soit exécuté. Ensuite, un dossier sera produit appelé stage
.c:\boost_1_57_0\stage\lib
.Et vous êtes prêt à partir!
J'ai eu le même problème. Cela est dû au fait que j'ai compilé Boost avec Visual C++ 2010 (v100) et que j'ai essayé d'utiliser la bibliothèque avec Visual Studio 2012 (v110) par erreur.
J'ai donc modifié les configurations (dans Visual Studio 2012) dans Propriétés du projet -> Général -> Plataform Toolset et modifier la valeur entre Visual Studio 2012 (v110) vers Visual Studio 2010 (v100) .
J'ai eu le même problème et mon erreur a été que j'avais 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) non v110 en tant que visual c ++ 2012. Donc, j'ai téléchargé boost_1_55_0-msvc-10.0-32.exe et maintenant tout va bien jusqu'à présent.
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 m'avait dit qu'il ne pouvait pas ouvrir libboost_regex-vc120-mt-Gd-1_58.lib ( notez le préfixe lib). Je n'ai pas précisé libboost_regex-vc120-mt-Gd-1_58.lib.
J'essayais d'utiliser (et j'avais construit) les bibliothèques boost dynamiques (.dlls) mais je n'avais pas défini la macro BOOST_ALL_DYN_LINK. Apparemment, la compilation contient des indications pour inclure une bibliothèque et, sans BOOST_ALL_DYN_LINK, celle-ci recherche la bibliothèque statique (avec le préfixe lib), pas la bibliothèque dynamique (sans préfixe lib).
Si vous avez des difficultés à créer boost ou si vous préférez ne pas le faire, vous pouvez également télécharger les fichiers lib à partir de SourceForge . Le lien vous mènera à un dossier contenant les fichiers lib et dll compressés pour la version 1.51. Cependant, vous devriez pouvoir modifier le lien pour spécifier la version de votre choix. Apparemment, l'installateur de BoostPro a quelques problèmes.
J'ai rencontré un problème similaire lors de l'utilisation de boost unit testing dans Visual Studio 2015 (Community Edition):
erreur fatale LNK1104: libboost_unit_test_framework-vc140-mt-1_57
alors j'ai pensé partager ma solution.
Vous pouvez créer un projet de test d'unités de surimpression 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 télécharger boost avec les fichiers binaires appropriés (compilés à l'aide de msvc v140) ou les extraire vous-même en exécutant les commandes suivantes à partir de la ligne de commande:
Où msvc-14.0 indique que nous avons besoin de la version de Visual Studio 2015 (VS 2015 = v14.0 = v140) et address-model = 32 indique que nous avons besoin de la plate-forme 32 (mais la même chose peut être fait pour 64 bits).
Une fois que vous avez les fichiers 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 faites les choix suivants:
Définissez "Général> Platform Toolset" sur Visual Studio 2015 (v140).
Incluez le chemin d'accès au dossier de renforcement (par exemple, C:\boost_1_57_0) et le chemin d'accès au sous-dossier contenant les fichiers binaires (par exemple, C:\boost_1_57_0\stage\lib) dans:
b2 -j% cores% toolset =% msvcver% adresse-modèle = 64 architecture = x86 lien = thread statique = multi runtime-link = partagé --build-type = étape minimale --stagedir = étape/x64
Propriétés → Éditeur de liens → Général → Répertoires de bibliothèque supplémentaires $ (BOOST)\stage \x64\ lib
J'ai eu le même problème rapporté ici. J'ai résolu le problème en déplaçant le fichier mainTest.cpp d'un sous-dossier src/mainTest/vers le dossier principal src / Je suppose que c'était également votre problème
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 avaient été précompilées et validées dans SCM) sur l'ancien projet hérité. Les noms de fichiers des bibliothèques ne comportaient pas de version VC ni BOOST, par exemple: libboost_regex-mt-sgd.lib
, cependant Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
a été déclenché automatiquement.
Correction en ajoutant manuellement le nom de fichier non-versionné à:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
et liste noire le ...vc120-mt-sgd-1_55.lib
dans
<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>