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 :

CMake, boost 1.55.0, Visual 2015, 2013


Sujet :

Visual C++

  1. #1
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut CMake, boost 1.55.0, Visual 2015, 2013
    Bonjour à tous,

    J'ai créé un petit Cmakelist pour compiler mon projet qui utilise boost 1.55.0 et seulement la DLL boost_system.

    J'ai compiler boost via mon projet GDeps (http://gdeps.org on peut retrouver les binaires de boost 1.55.0 compiler à l'adresse suivante : http://gdeps.org/reports/report.php?folder=boost_1-55 )
    J'ai donc dans le fichier stage/lib quasiment toutes les dll en multithread en release et debug pour vc90, vc100, vc110, vc120, vc140, mingw51, mingw48. Peut être que le problème viens de là car je ne vois pas le distinguo entre 32bits et 64bits alors que normalement j'ai compiler boost pour les deuxce qui se voit dans les sous dossiers de "bin.v2/libs/system/build/[compilateur]". Il y a les sous-dossier "address-model-32" et "address-model-64" avec à l'intérieur les DLL. En tout cas si je compile juste un projet il me dit que la DLL n'est pas valide et c'est la version vc140. Mais voilà l'erreur qui surgit en compilant toute la solution est tout autre.

    Pour Mingw Codeblocks je n'ai pas de soucis.
    Pour visual 2015 j'ai cette erreur. Il ne trouve pas LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-gd-1_55.lib'
    Tout d'abord cela devrait être vc140 et non vc120. J'ai fait une recherche dans le projet visual2015, seulement boost_system-vc140-mt-gd-1_55.lib apparait. La version vc120 n'apparait que dans les logs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line 16:      1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-gd-1_55.lib'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Line 105:          Linking to lib file: libboost_system-vc120-mt-1_55.lib
    	Line 120:          Linking to lib file: libboost_date_time-vc120-mt-1_55.lib
    	Line 121:          Linking to lib file: libboost_regex-vc120-mt-1_55.lib
    	Line 122:          Linking to lib file: libboost_thread-vc120-mt-1_55.lib
    	Line 123:          Linking to lib file: libboost_chrono-vc120-mt-1_55.lib
    	Line 163:          Linking to lib file: libboost_system-vc120-mt-1_55.lib
    	Line 178:          Linking to lib file: libboost_date_time-vc120-mt-1_55.lib
    	Line 179:          Linking to lib file: libboost_regex-vc120-mt-1_55.lib
    	Line 180:          Linking to lib file: libboost_thread-vc120-mt-1_55.lib
    	Line 181:          Linking to lib file: libboost_chrono-vc120-mt-1_55.lib
    	Line 268:      1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-1_55.lib'

    Voici le code CMake qui inclue boost via le module FindBoost.cmake

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # Dependencies
    #*Boost : https://github.com/Kitware/CMake/blob/master/Modules/FindBoost.cmake
    set(Boost_USE_MULTITHREADED ON)
    set(Boost_USE_STATIC_RUNTIME OFF)
    find_package(Boost 1.55.0 REQUIRED COMPONENTS system) # thread exception filesystem 
     
    if(Boost_FOUND)
    	include_directories(${Boost_INCLUDE_DIRS})
    	link_directories(${Boost_LIBRARY_DIRS})
    	target_link_libraries(gr ${Boost_LIBRARIES})
    	#target_link_libraries(gr ${Boost_SYSTEM_LIBRARY})
    	add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
     
    	IF( WIN32 )
    		target_link_libraries(gr ws2_32 mswsock) # ws_32 wsock32 
    	ENDIF( WIN32 )
     
    else()
        message(fatal_error "Boost was not found. See FindBoost.cmake for details.")
    endif()

    Si vous aviez une idée ça serait génial.

    Merci
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  2. #2
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    J'ai fait mon projet Visual 2015 à la main sans passer par CMAKe et j'ai la même erreur. Visual se retrouve à cherché la version de vc120 de la DLL*system de boost.
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  3. #3
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    J'ai compiler boost 1.64.

    Avec visual 2015, cette fois c'est bon il cherche la librairie system de boost pour le compilateur vc140. MAIS... non visual m'ajoute un lib devant le nom de la librairie... donc il ne la trouve pas.

    Le chemin spécifié en dur dans les option de liens (il est bon)
    X:\...\boost_1-64\bin.v2\libs\system\build\msvc-14.0\release\threading-multi\boost_system-vc140-mt-1_64.lib

    Et voici l'erreur:
    Severity Code Project Description File Line
    Error LNK1104 ProjectXX cannot open file 'libboost_system-vc140-mt-1_64.lib' X:...\sources\trunk\Visual_2015\VC140\release_dynamic\src\gr\LINK 1
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  4. #4
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    Que ça soit généré par CMake ou créé à la main visual cherche la librairie en lui rajoutant lib devant.
    Il se comporte comme si c'était une librairie généré par mingw.
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  5. #5
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    Un autre fait amusant en debug dans mon projet fait à la main. J'ai spécifié la DLL en release comme ci-dessus. Et la librairie qu'il recherche est libboost_system-vc140-mt-gd-1_64.lib.

    Quelque chose a «corrigé» et lui a spécifié que c'est la debug qu'il faut alors que moi je ai lui spécifié sans le -gd. Sans oublié d'ajouter le préfixe «lib» au nom de la DLL

    Qui est le coupable? Visual qui possède des comportements obscures? Boost qui lors de sa compilation a injecté des mauvaises ondes à Visual...

    Là je commence à croire que l'équipe de visual c'est pris pour dieux et a décidé que pour boost il fallait aider les gens ...
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  6. #6
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    Pour ceux qui voudrais essayer de reproduire mon bogue, voici les log et les binaires de ma compilation de boost 1.64.0.
    http://gdeps.org/reports/report.php?folder=boost_1-64

    EDIT:

    On notera la différence entre une erreur volontaire dans le chemin de la lib:*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Severity	Code	Project	Description	File	Line
    Error	LNK1181	gr	cannot open input file 'X:\...boost_1-64\boost_1-64\bin.v2\libs\system\build\faux_dossier\release\threading-multi\boost_system-mt-1_64.lib'	X:\...\trunk\Visual_2015\VC140\release_dynamic\src\projectname\LINK	1
    et l'erreur quand le chemin est bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Severity Code Project Description File Line
    Error LNK1104 ProjectXX cannot open file 'libboost_system-vc140-mt-1_64.lib' X:...\sources\trunk\Visual_2015\VC140\release_dynamic\src\gr\LINK 1
    Le chemin est omis. Seul apparaît le nom de la librairie avec le préfixe lib. Pour moi il y a soit une erreur dans les lib généré par boost. Comme si elles pointaient vers autre choses. Soit c'est visual qui a fumé.
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

  7. #7
    Membre actif Avatar de Suryavarman
    Homme Profil pro
    Développeur 3D
    Inscrit en
    Mai 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2006
    Messages : 233
    Points : 245
    Points
    245
    Par défaut
    J'ai fait une recherche du terme libboost_system-vc140-mt-1_6.

    X:\...\boost_1-64\bin\msvc-14.0-32-release-32-multi.log (3 hits)
    Line 990: msvc.archive bin.v2\libs\system\build\msvc-14.0\release\link-static\threading-multi\libboost_system-vc140-mt-1_64.lib
    Line 991: common.copy stage\lib\libboost_system-vc140-mt-1_64.lib
    Line 992: bin.v2\libs\system\build\msvc-14.0\release\link-static\threading-multi\libboost_system-vc140-mt-1_64.lib
    X:\...\boost_1-64\bin\msvc-14.0-64-release-64-multi.log (3 hits)
    Line 1036: msvc.archive bin.v2\libs\system\build\msvc-14.0\release\address-model-64\link-static\threading-multi\libboost_system-vc140-mt-1_64.lib
    Line 1037: common.copy stage\lib\libboost_system-vc140-mt-1_64.lib
    Line 1038: bin.v2\libs\system\build\msvc-14.0\release\address-model-64\link-static\threading-multi\libboost_system-vc140-mt-1_64.lib
    Il y bien la présence de libboost_system-vc140-mt-1_64.lib

    Mais alors pourquoi visual cherche la statique.

    J'ai donc regardé à l'intérieur des fichiers binaires pour voir si il y a des références vers cette version statique. Je n'ai rien trouvé. Voici les textes.
    voici ce qui a dans boost_system-vc140-mt-1_64.lib:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    !<arch>
    /               1496423972              0       440       `
    XÎ
    :
    :		
    â__IMPORT_DESCRIPTOR_boost_system-vc140-mt-1_64__NULL_IMPORT_DESCRIPTORboost_system-vc140-mt-1_64_NULL_THUNK_DATA?system_category@system@boost@@YAABVerror_category@12@XZ__imp_?system_category@system@boost@@YAABVerror_category@12@XZ?generic_category@system@boost@@YAABVerror_category@12@XZ__imp_?generic_category@system@boost@@YAABVerror_category@12@XZ__imp_?throws@system@boost@@3Verror_code@12@A/               1496423972              0       452       `
    XÎ:
    	â
    ?generic_category@system@boost@@YAABVerror_category@12@XZ?system_category@system@boost@@YAABVerror_category@12@XZ__IMPORT_DESCRIPTOR_boost_system-vc140-mt-1_64__NULL_IMPORT_DESCRIPTOR__imp_?generic_category@system@boost@@YAABVerror_category@12@XZ__imp_?system_category@system@boost@@YAABVerror_category@12@XZ__imp_?throws@system@boost@@3Verror_code@12@Aboost_system-vc140-mt-1_64_NULL_THUNK_DATA//              1496423972              0       31        `
    boost_system-vc140-mt-1_64.dll
    /0              1496423972              0       570       `
    L$ž1Y2.debug$STŒ@B.idata$2àô@0À.idata$6 ô@ À%	boost_system-vc140-mt-1_64.dll'òYMicrosoft (R) LINKboost_system-vc140-mt-1_64.dll@comp.idòYÿÿ.idata$2@Àh.idata$6.idata$4@Àh.idata$5@Àh3Lx__IMPORT_DESCRIPTOR_boost_system-vc140-mt-1_64__NULL_IMPORT_DESCRIPTORboost_system-vc140-mt-1_64_NULL_THUNK_DATA/0              1496423972              0       269       `
    L$ž1YÌ.debug$STd@B.idata$3¸@0À%	boost_system-vc140-mt-1_64.dll'òYMicrosoft (R) LINK@comp.idòYÿÿ__NULL_IMPORT_DESCRIPTOR
    /0              1496423972              0       316       `
    L$ž1Yè.debug$STŒ@B.idata$5à@0À.idata$4ä@0À%	boost_system-vc140-mt-1_64.dll'òYMicrosoft (R) LINK@comp.idòYÿÿ0boost_system-vc140-mt-1_64_NULL_THUNK_DATA/0              1496423972              0       109       `
    ÿÿL$ž1YY?generic_category@system@boost@@YAABVerror_category@12@XZboost_system-vc140-mt-1_64.dll
    /0              1496423972              0       108       `
    ÿÿL$ž1YX?system_category@system@boost@@YAABVerror_category@12@XZboost_system-vc140-mt-1_64.dll/0              1496423972              0       91        `
    ÿÿL$ž1YG?throws@system@boost@@3Verror_code@12@Aboost_system-vc140-mt-1_64.dll
    Voici ce qu'il y a dans boost_system-vc140-mt-1_64.exp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    L$ž1Yž
    .edatadd
    @@.debug$SÖÈ@B$ž1Yboost_system-vc140-mt-1_64.dll?generic_category@system@boost@@YAABVerror_category@12@XZ?system_category@system@boost@@YAABVerror_category@12@XZ?throws@system@boost@@3Verror_code@12@A $(
    4,80<	ñÊ`bin.v2\libs\system\build\msvc-14.0\release\threading-multi\boost_system-vc140-mt-1_64.exp+<òYMicrosoft (R) LINK†=cwdE:\Working\GDeps\trunk\Projects\boost_1-64\boost_1-64exeC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.exe@8?generic_category@system@boost@@YAABVerror_category@12@XZ?8?system_category@system@boost@@YAABVerror_category@12@XZ.8?throws@system@boost@@3Verror_code@12@A@comp.idòYÿÿ.edata.debug$SszNameFrgpv(rgszName4rgwOrd@$N00001e$N00002Ÿ$N00003Ø>wŸ?generic_category@system@boost@@YAABVerror_category@12@XZ?system_category@system@boost@@YAABVerror_category@12@XZ?throws@system@boost@@3Verror_code@12@A
    error_code.obj.rsp (un fichier généré à côté de de boost_system-vc140-mt-1_64.lib)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    "libs\system\src\error_code.cpp" -Fo"bin.v2\libs\system\build\msvc-14.0\release\threading-multi\error_code.obj"    -TP /O2 /Ob2 /W4 /GR /MD /Zc:forScope /Zc:wchar_t /wd4675 /EHs -c 
    -DBOOST_ALL_NO_LIB=1 
    -DBOOST_SYSTEM_DYN_LINK=1 
    -DNDEBUG 
    "-I."
    Je vous épargne le fichier error_code.obj


    le fichier boost_system-vc140-mt-1_64.dll.manifest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level='asInvoker' uiAccess='false' />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    dans la dll le texte en clair n'indique rien de mauvais.
    "Quand le monde est dangereux, l'humilité est un facteur de longévité." ( Baxter "Evolution" )

Discussions similaires

  1. boost 1.55, visual studio 2013 sous Windows 7
    Par r0d dans le forum Boost
    Réponses: 3
    Dernier message: 08/02/2014, 12h09
  2. Microsoft présente Visual Studio 2013 et Team Foundation Server 2013
    Par Stéphane le calme dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 09/07/2013, 10h54
  3. Réponses: 1
    Dernier message: 27/09/2010, 11h56
  4. Boost.Variant warning et visual
    Par 3DArchi dans le forum Boost
    Réponses: 9
    Dernier message: 06/03/2009, 18h57

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