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

C++ Discussion :

multiple definition of first defined here


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut multiple definition of first defined here
    bonjour,
    j'ai développer une appli c++ en utilisant CMake pour la compilation,
    mon projet marche super lorsque que je le compile normalement j'ai mes test qui marche mais lorsque j'ai ajouter CMake impossible de lancer la compilation voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Scanning dependencies of target Test
    [ 96%] Building CXX object src/test/CMakeFiles/Test.dir/AllTest.cpp.obj
    [100%] Linking CXX executable Test.exe
    ../Controller/libController.a(Measure.cpp.obj):Measure.cpp:(.text+0x28): multiple definition of `Measure::Measure(float, tm)'
    ../libWESTGARD-SSM.dll.a(d000225.o):(.text+0x0): first defined here
    collect2.exe: error: ld returned 1 exit status
    mingw32-make.exe[3]: *** [src\test\CMakeFiles\Test.dir\build.make:103: src/test/Test.exe] Error 1
    mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:474: src/test/CMakeFiles/Test.dir/all] Error 2
    mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:486: src/test/CMakeFiles/Test.dir/rule] Error 2
    mingw32-make.exe: *** [Makefile:265: Test] Error 2
    j'ai donc vérifier tout mes .h et . cpp pour savoir si il y avait un erreur mais non , de plus mon projet compile toujours sans CMake
    quelqu'un aurais une idée parce que moi sa va faire plusieurs jour que je planche dessus et impossible de savoir pourquoi j'ai cette erreur

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 482
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    On aura peut-être une idée si tu nous montres ton fichier CMakeLists.txt

    Le message signifie qu'il existe 2 fois une définition pour cette fonction. Soit tu la définis dans plusieurs fichiers, soit dans une bibliothèque et un fichier, soit dans deux bibliothèques.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    merci de la réponse
    premièrement voici l'arborescence de mon projet

    Nom : Capturearbio.PNG
Affichages : 809
Taille : 20,6 Ko

    il y a donc un dossier src contenant le code source dans les dossier Controller, DataMapper et Model mais aussi les test dans le dossier Test, le dossier thirdparty contient les lib que j'ai utiliser.
    voici mon CMakeList principal

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    cmake_minimum_required (VERSION 3.2 FATAL_ERROR)
     
    # must be done before calling project()
    if (NOT CMAKE_BUILD_TYPE)
      set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type, Debug or Release" FORCE)
    endif()
     
    # configure the installation directory (artifact)
    set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "Where to install the library files (artifact)" FORCE)
    #SET(CMAKE_INSTALL_PREFIX "install-package")
     
    # WARNING: project() must be called AFTER the above lines (otherwise they will be ignored)
    project(WESTGARD-SSM)
     
    # adjust compilation flags
    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Werror")
    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
     
    # 3rd party libs
    include(${CMAKE_SOURCE_DIR}/third_parties/Westgardlib-SSM.cmake)
     
    # source code of the project
    add_subdirectory(src)
     
    # declare unit tests
    enable_testing()
    # calling testcase
     
    add_test(NAME AllTest COMMAND Test --gtest_output=xml:gtest_report.xml)
    celui contenu dans src

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    add_subdirectory(Controller)
    add_subdirectory(DataMapper)
    add_subdirectory(Model)
    add_subdirectory(test)
     
     
    set(PUBLIC_HEADERS
    Westgard_Config.xml
            WestgardInterface.h
    )
     
    add_library(WESTGARD-SSM SHARED
        WestgardInterface.h
        WestgardInterface.cpp
    )
     
     
    target_link_libraries(WESTGARD-SSM
            Model
            Controller
            DataMapper
            Markup
    )
     
     
     
     
    set_target_properties(WESTGARD-SSM PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")
    set_target_properties(WESTGARD-SSM PROPERTIES VERSION 0.1)
    install(TARGETS WESTGARD-SSM
        PUBLIC_HEADER DESTINATION include/
        LIBRARY DESTINATION lib # .so destination on linux
        RUNTIME DESTINATION lib # .dll destination on win32
    )
    je met également celui du dossier Controller ou se trouve ma classe Measure

    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
    21
    add_library(Controller
    	ERulesName.h
    	ERuleStatement.h
    	EUpdateResult.h
    	EvaluateController.cpp
    	EvaluateController.h
    	EWGResult.h
    	Measure.cpp
    	Measure.h
    	RuleSetting.cpp
    	RuleSetting.h
    	WestgardConfiguration.cpp
    	WestgardConfiguration.h
    	WestgardResult.cpp
    	WestgardResult.h
    )
     
    target_link_libraries(Controller
    	DataMapper
    	Model
    )
    enfin celui des teste

    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
    21
    22
    23
    24
    25
    26
    27
    add_executable(Test
    	AllTest.cpp
    	EvaluateControllerTest.h
    	Rule_1_2sTest.h
    	Rule_1_3sTest.h
    	Rule_2_2sTest.h
    	Rule_2of3_2sTest.h
    	Rule_R_4sTest.h
    	Rule_X_1sTest.h
    	Rule_XxTest.h
    	Rule_XTTest.h
    	RulesDataMapperTest.h
    	RuleSettingTest.h
    	WestgardConfigurationTest.h
    	WestgardInterfaceTests.h
    )
     
     
    target_link_libraries(Test
    	WESTGARD-SSM
    	gtest
    	pthread
    	Controller
    	Model
    	DataMapper
    	Markup
    )
    j'ai encore d'autre CMakeList mais il n'utilise pas la classe Measure donc je ne pense pas utile de les mettre

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    j'ai finalement trouver la problème

    dans le CMake de teste dans la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    target_link_libraries(Test
    	WESTGARD-SSM
    	gtest
    	pthread
    	Controller
    	Model
    	DataMapper
    	Markup
    )
    j'ai juste placé ma lib WESTAGRD-SSM a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    target_link_libraries(Test
    	gtest
    	pthread
    	Controller
    	Model
    	DataMapper
    	Markup
    	WESTGARD-SSM
    )
    et mes test s’exécute merci beaucoup de ton aide Bktero

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 27
    Dernier message: 26/03/2008, 08h06
  2. Multiple definition
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 11/05/2006, 19h21
  3. multiple definition of operator<<...
    Par kleenex dans le forum C++
    Réponses: 3
    Dernier message: 05/05/2006, 02h56
  4. [LG]Interfaces et multiples définitions
    Par fatt dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2004, 22h41
  5. multiple definition
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 10/09/2003, 13h16

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