+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut [CMAKE] undefined reference to

    Bonjour,

    Lors de que je lance le Makefile qui est généré par l’outil CMAKE la compilation de mon exécutable s’arrête et m'affiche :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    [  5%] Building CXX object commun/configuration/src/config/CMakeFiles/COMMUN_blaConfig.dir/blaConfig.cpp.o
    Linking CXX shared library libCOMMUN_blaConfig.so
    [  5%] Built target COMMUN_blaConfig
    [ 11%] Building C object commun/configuration/src/xml_tags/CMakeFiles/COMMUN_XML_TAGS.dir/config_tags.c.o
    Linking C shared library libCOMMUN_XML_TAGS.so
    [ 11%] Built target COMMUN_XML_TAGS
    [ 16%] Building CXX object commun/transcode/src/CMakeFiles/COMMUN_Trancecode.dir/transcode.cpp.o
    Linking CXX shared library libCOMMUN_Trancecode.so
    [ 16%] Built target COMMUN_Trancecode
    [ 22%] Building C object commun/divers/CMakeFiles/COMMUN_FGETS2.dir/src/fgets2.c.o
    Linking C shared library libCOMMUN_FGETS2.so
    [ 22%] Built target COMMUN_FGETS2
    [ 27%] Building CXX object commun/chiffrement/src/CMakeFiles/COMMUN_CHFT_FEDEKEY.dir/fedekey.cpp.o
    Linking CXX shared library libCOMMUN_CHFT_FEDEKEY.so
    [ 27%] Built target COMMUN_CHFT_FEDEKEY
    [ 33%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/chft_op_cpp.cpp.o
    [ 38%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/BLAChftCharg.cpp.o
    [ 44%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/blaChftKLect.cpp.o
    Linking CXX shared library libbla_CHFT_MET_OBJ.so
    [ 44%] Built target bla_CHFT_MET_OBJ
    [ 50%] Building C object chft_outils_dechiffrement/metier/CMakeFiles/bla_CHFT_OP_OBJ.dir/chft_operations.c.o
    Linking C shared library libbla_CHFT_OP_OBJ.so
    [ 50%] Built target bla_CHFT_OP_OBJ
    [ 55%] Building C object chft_outils_dechiffrement/metier/ncipher/CMakeFiles/DCHFT_METIER_NCIPHER.dir/chft_ncipher_op.c.o
    [ 61%] Building C object chft_outils_dechiffrement/metier/ncipher/CMakeFiles/DCHFT_METIER_NCIPHER.dir/simplebignum.c.o
    Linking C shared library libDCHFT_METIER_NCIPHER.so
    [ 61%] Built target DCHFT_METIER_NCIPHER
    [ 66%] Building C object chft_outils_dechiffrement/metier/openssl/CMakeFiles/DCHFT_METIER_OSSL.dir/chft_openssl_op.c.o
    Linking C shared library libDCHFT_METIER_OSSL.so
    [ 66%] Built target DCHFT_METIER_OSSL
    [ 72%] Building C object chft_outils_dechiffrement/commun/CMakeFiles/bla_CHFT_COMMON_OBJ.dir/chft_consts.c.o
    Linking C shared library libbla_CHFT_COMMON_OBJ.so
    [ 72%] Built target bla_CHFT_COMMON_OBJ
    [ 77%] Building CXX object chft_outils_dechiffrement/api/CMakeFiles/bla_CHFT_API_OBJ.dir/chft_init.cpp.o
    [ 83%] Building CXX object chft_outils_dechiffrement/api/CMakeFiles/bla_CHFT_API_OBJ.dir/chft_op.cpp.o
    Linking CXX shared library libbla_CHFT_API_OBJ.so
    [ 83%] Built target bla_CHFT_API_OBJ
    [ 88%] Building CXX object chft_outils_dechiffrement/test/CMakeFiles/testInit.dir/main.cpp.o
    Linking CXX executable bin/testInit
    CMakeFiles/testInit.dir/main.cpp.o(.text+0x2e8): In function `main':
    : undefined reference to `init_CHFTLib(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, blaLogger*)'
    CMakeFiles/testInit.dir/main.cpp.o(.text+0x593): In function `main':
    : undefined reference to `cryptFederationKey(unsigned long, unsigned long, blaLogger*)'
    collect2: ld a retourné 1 code d'état d'exécution
    make[2]: *** [chft_outils_dechiffrement/test/bin/testInit] Erreur 1
    make[1]: *** [chft_outils_dechiffrement/test/CMakeFiles/testInit.dir/all] Erreur 2
    mon fichier CMakeLists est le suivant :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    cmake_minimum_required(VERSION 2.8)
     
    #Déclaration du projet
    project(bla)
    set(EXECUTABLE_OUTPUT_PATH bin/${CMAKE_BUILD_TYPE}) 
     
     
    add_executable(
        ${MAINTEST}
        main.cpp
    )
     
    include_directories(${CMAKE_BINARY_DIR})
     
     
     
    #Configuration de l'édition de liens
    target_link_libraries(
    ${MAINTEST}
    ${LIB_FOR_MAIN}
    )
    target_link_libraries(
    ${MAINTEST}
    ${LIBS})
     
     
    add_definitions(
    ${CPLUS_FLAGS}
    $(CFLAGS_OPTIONS)
    )
    add_definitions(${GCC4_COMMON_FLAGS}  ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS})
     
     
    include_directories(
    ${BLA_CHFT_API_DIR}
    ${BLA_CHFT_COMMON_DIR}
    "${HOME}/bla/dev/commun/configuration/src/config"
    "${HOME}/bla/dev/commun/traces/src/gestLog"
    "${HOME}/apache/include"
    "${HOME}/bla/dev/commun/include"
    "${HOME}/bla/dev/commun/chiffrement/src")
    j'ai l'impression que il n'arrive pas a faire le lien avec les lib qu'il sont compilé juste avant ou avec les include
    auriez vous une idée d'ou cela pourrais venir?

    merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Je ne suis pas sûr mais je ne mets jamais deux target_link_librairies pour une même target. Est-ce que
    Code :
    1
    2
    3
    4
    target_link_libraries(
    ${MAINTEST}
    ${LIB_FOR_MAIN}
    ${LIBS})
    améliore les choses ?

    Sinon, est-ce que les fonctions init_CHFTLib(std::string, blaLogger*) et cryptFederationKey(unsigned long, unsigned long, blaLogger*) sont bien définies ? Si oui, est-ce que les sources les contenant sont bien compilées dans une librairie ? Enfin, as-tu vérifié le contenu de LIB_FOR_MAIN et LIBS ?

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Oui autant pour moi je suis repassé avec une lib un link mais j'ai toujours la même erreurs. Oui, les méthodes sont bien compilé dans les libs defini avant.

    j'ai l'impression qu'il n'arrive pas a récupéré les libs que j'ai compilé a d'autres endroit du projet. comme si elle n'existais pas. elle quel sont bien présente dans les dossier correspondent.

  4. #4
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 1 060
    Points
    1 060

    Par défaut

    Si tu ne définis pas LIB_FOR_MAIN ou LIBS dans un Makefile parent, ça ne marchera pas, à moins que tu utilises PARENT_SCOPE.

    Par contre, tu peux utiliser directement le nom des librairies où tu veux, au lieu de passer par une variable. N'oublie pas aussi la transitivité : si tu dis qu'une librairie A est linkée contre une librairie B, quand tu linkeras ton exécutable contre A, il sera aussi linké contre B.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •