Je suis nouveau dans C++ et Boost. Je fais un petit programme simple pour essayer d'apprendre la bibliothèque Boost Filesystem. J'ai suivi les instructions pour construire les bibliothèques Boost. Et maintenant, lorsque j'essaie de compiler ce code simple, je reçois 6 de ces erreurs.
Erreur 5 erreur LNK2038: incompatibilité détectée pour '_MSC_VER': la valeur '1700' ne correspond pas à la valeur '1600' dans App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd- 1_51.lib (codecvt_error_category.obj) ConsoleApp2 Erreur 1 erreur LNK2038: une incompatibilité détectée pour '_MSC_VER': la valeur '1700' ne correspond pas à la valeur '1600' dans App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (operations.obj) ConsoleApp2 erreur 2 erreur LNK2038: non concordance détectée pour '_MSC_VER': la valeur '1700' ne correspond pas à la valeur '1600' de l'application. obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (path.obj) ConsoleApp2 Erreur 3 erreur LNK2038: incompatibilité détectée pour '_MSC_VER': valeur "1700" ne. Ne correspond pas à la valeur '1600' dans App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (path_traits.obj) ConsoleApp2 Erreur 4 erreur LNK2038: détection de mismatch détectée pour ' _MSC_VER ': la valeur' 1700 'n'est pas ma valeur tch '1600' dans App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (windows_file_codecvt.obj) ConsoleApp2 Erreur 6 erreur LNK1104: impossible d'ouvrir le fichier 'libboost_filesystem -vc100-mt-Gd-1_51.lib 'C:\SOURCE\ConsoleApp2\ConsoleApp2\LINK ConsoleApp2
Mon code dans App.cpp
dans mon projet ConsoleApp2
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;
int main(void)
{
path p = "C:\\TestFiles";
cout << is_directory(p);
return 0;
}
J'essaie de compiler l'application avec Visual Studio 2010. Certaines des informations que j'ai trouvées en ligne étaient liées à VS 2012. Cela ne me concerne pas, à mon avis. Je voudrais essayer de résoudre les 5 erreurs d'incompatibilité et l'erreur de lien final. J'espère que la dernière erreur est liée aux 5 précédentes.
libboost_filesystem-vc110-mt-Gd-1_51.lib
est une bibliothèque construite avec VS 2012 (également appelée VC 11.0), comme indiqué par le vc110
dans la convention de dénomination. Cette bibliothèque ne sera pas correctement reliée aux objets construits avec VS 2010 (également appelé VC 10.0).
Si vous souhaitez créer votre programme avec VS 2010, vous devez vous procurer ou créer des bibliothèques boost pour VS 2010.
Ouvrez le fichier *.vcxproj
avec un éditeur de texte.
Recherchez et supprimez l'élément <_ProjectFileVersion>
, puis enregistrez le fichier.
Exemple,
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>11.0.30319.1</_ProjectFileVersion> <--- Delete this element
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
Et reconstruisez à nouveau la solution. Vous verrez le projet se compiler avec succès.
J'essayais de compiler le code Teamcenter ITK C++ et j'ai reçu le même message d'erreur:
erreur LNK2038: incompatibilité détectée pour '_MSC_VER': la valeur '1700' ne correspond pas à la valeur '1600' dans itk_main.obj
La solution de rechange que j'ai recherchée était de rechercher msvcprt.lib assis quelque part dans c: (Utilisé tout pour la recherche, que l'on peut trouver sur voidtools.com)
Ouvert ce fichier dans NP ++ ou l'éditeur de texte, recherchez le mot clé _MSC_VER et modifiez la valeur/FAILIFMISMATCH: "_ MSC_VER = 1700" en/FAILIFMISMATCH: "_ MSC_VER = 1600"
Et oui, j'ai pu compiler.