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

Qt Discussion :

ld returned 1 exit status


Sujet :

Qt

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut ld returned 1 exit status
    Bonjour,

    je débute avec Qt et Qt créator, et j'ai cette erreur (ld returned 1 exit status) à la compilation.
    J'ai compilé ma version de Qt en static pour pouvoir déployer mon appli (petite) sur mac.

    Pour la compilation, j'ai essayé de nettoyer le projet, lancer qmake puis construire, l'erreur persiste.

    J'ai vérifié que toutes mes fonctions déclarées sont implémentées.

    Je n'ai pas d'autres messages d'erreur à part des avertissements sans importance.

    Avez vous une idée du problème ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Je sais que ce genre d'erreur arrive quand certains fichiers sont inaccessibles en écriture. Typiquement, ton fichier exécutable de ton projet est lancé, tu fais quelques modifs et tu recompiles, et là tu auras ce genre d'erreurs car le compilateur ne peut pas "remplacer" le fichier exécutable vu qu'il est en cours d'utilisation.

    N'aurais tu pas des contraintes de droits d'écriture ?

    Après, cette erreur à sans doutes d'autres causes possibles. C'est juste UNE piste.

    G.

  3. #3
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    On peut voir les erreurs consoles, ainsi que ton fichier .pro?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    L'exécutable n'est pas encore généré, donc le pb de droit je pense pas.

    Voila la sortie de compilation :

    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
    35
    36
    Running build steps for project PatientFileViewer...
    Configuration unchanged, skipping QMake step.
    Starting: C:/Qt/2009.03/mingw/bin/mingw32-make.exe -w 
    mingw32-make: Entering directory `C:/Developpement/Qt/tests/PatientFileViewer'
    C:/Qt/2009.03/mingw/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `C:/Developpement/Qt/tests/PatientFileViewer'
    c:\Qt\2009.03\qt\bin\uic.exe pfviewer.ui -o ui_pfviewer.h
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\main.o main.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\pfviewer.o pfviewer.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\filereader.o filereader.cpp
    filereader.cpp: In destructor `FileReader::~FileReader()':
    filereader.cpp:46: warning: comparison between signed and unsigned integer expressions
    filereader.cpp:52: warning: comparison between signed and unsigned integer expressions
    filereader.cpp:55: warning: comparison between signed and unsigned integer expressions
    filereader.cpp:64: warning: comparison between signed and unsigned integer expressions
    filereader.cpp: In member function `int FileReader::readFile()':
    filereader.cpp:162: warning: unused variable 'test'
    filereader.cpp:152: warning: unused variable 'test'
    filereader.cpp:171: warning: unused variable 'test2'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\Util.o Util.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\xmlparser.o xmlparser.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\pfvcaptionsxmlcontenthandler.o pfvcaptionsxmlcontenthandler.cpp
    pfvcaptionsxmlcontenthandler.cpp: In constructor `PFVCaptionsXmlContentHandler::PFVCaptionsXmlContentHandler()':
    pfvcaptionsxmlcontenthandler.cpp:5: warning: unused variable 'i'
    C:/Qt/2009.03/qt/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -D__GNUC__ -DWIN32 pfviewer.h -o debug\moc_pfviewer.cpp
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.03\qt\include\QtCore" -I"..\..\..\..\Qt\2009.03\qt\include\QtGui" -I"..\..\..\..\Qt\2009.03\qt\include\QtXml" -I"..\..\..\..\Qt\2009.03\qt\include" -I"..\..\..\..\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\moc_pfviewer.o debug\moc_pfviewer.cpp
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\PatientFileViewer.exe debug/main.o debug/pfviewer.o debug/filereader.o debug/Util.o debug/xmlparser.o debug/pfvcaptionsxmlcontenthandler.o debug/moc_pfviewer.o -L"c:\Qt\2009.03\qt\lib" -lmingw32 -lqtmaind -lQtXmld -lQtGuid -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
    mingw32-make[1]: Leaving directory `C:/Developpement/Qt/tests/PatientFileViewer'
    mingw32-make: Leaving directory `C:/Developpement/Qt/tests/PatientFileViewer'
    C:\Qt\2009.03\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtXmld
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\PatientFileViewer.exe] Error 1
    mingw32-make: *** [debug] Error 2
    Exited with code 2.
    Error while building project PatientFileViewer
    When executing build step 'Make'
    voila le fichier .pro :

    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
    # -------------------------------------------------
    # Project created by QtCreator 2009-07-28T15:16:35
    # -------------------------------------------------
    QT += xml
    TARGET = PatientFileViewer
    TEMPLATE = app
    SOURCES += main.cpp \
        pfviewer.cpp \
        filereader.cpp \
        Util.cpp \
        xmlparser.cpp \
        pfvcaptionsxmlcontenthandler.cpp
    HEADERS += pfviewer.h \
        filereader.h \
        Util.h \
        xmlparser.h \
        pfvcaptionsxmlcontenthandler.h
    FORMS += pfviewer.ui

  5. #5
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    L'erreur est là :

    C:\Qt\2009.03\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQtXmld

    Le compilo ne trouve pas la libraire QtXmld. Le d signifie debug je suppose. Il est possible que ton installation de Qt sois bancale ou incomplète et que toutes les librairies ne soient pas présentes.

    Essaie de recompiler en mode release voir si il trouve le module QtXml.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    La compilation en mode release donne la même chose.

    J'ai pourtant bien les sources et les bibliothèques qtxml (dont qtxmld.prl) dans le répertoire d'installation de qt.

  7. #7
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Cherche où se trouve cette lib manquante.
    Elle doit porter le nom de libxmld.a et de xmld.dll, quelque chose comme ça. Après tu peux rajouter le chemin dans ton .pro.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Heu ok mais je l'ajoute à une variable déjà existante ?

    QT += xml \ chemin .a \ chemin .dll

    ?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    A mettre dans le .pro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBS += C:/Qt/....../maLib.lib  // ou .a si tu es sous Unix
    Attention, que tu sois sous windows ou unix, il faut utiliser des "/" et non des "\".

    G.

  10. #10
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Je dirais que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    LIBS += -LC:\mon\path\test
    fonctionne.
    Et pour ajouter une dll après avoir ajouté le chemin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LIBS += -ltest //Pour ajouter le fichier libtest.a

  11. #11
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    Échappe tes "\" => "\\"
    Attention aux espaces dans les chemins, entoure de guillemets "

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Je suis sous windows, et après plusieurs essais infructueux j'en suis la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LIBS += -LC:/Qt/2009.03/qt/lib -llibQtXmld4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Qt\2009.03\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibQtXmld4
    j'ai essayé avec -llibQtXmld4.a, il ne trouve pas non plus.

    Alors que le fichier libQtXmld4.a existe bien dans C:/Qt/2009.03/qt/lib

    Ca veut dire quoi -L et -l ?

  13. #13
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Chez moi, sur win32, ceci fonctionne.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Ok, est-ce que le fait que je l'ai compilé en mode static n'y serait pas pour quelque chose ?

  15. #15
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    Le -l c'est pour le nom de la librairie (attention, ne pas mettre le "lib" et l'extension).
    Le -L c'est pour le chemin de la librairie.

    Le fait que ca soit statique peut tout à fait jouer !!! Qu'as tu de "static" ? Comment les as tu généré? Et comment les lies tu à ton projet?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    j'ai compilé Qt comme ceci :

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBS += -LC:/Qt/2009.03/qt/lib -lQtXmld4
    sans succès.

  17. #17
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 770
    Par défaut
    Citation Envoyé par XavierHWT Voir le message
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBS += -LC:/Qt/2009.03/qt/lib -lQtXmld4
    sans succès.
    Quand tu utilises un module Qt, il ne faut pas essayer de lier soi-même contre ce module : la variable QT est prévue pour cela !

    Pour utiliser le module QtXml, à insérer dans ton .pro :
    QT += xml
    Cela forcera le linker à lier contre QtXml.dll, et non libQtXml.dll (comportement par défaut avec -l : préfixer avec lib pour trouver le fichier contre lequel linker).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  18. #18
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Question bête : Vu tes chemins de fichier, je soupçonne que tu travailles sous windows. Pourquoi alors as tu des archives ".a" et non des ".lib" et ".dll" ?

    As tu bien recompilé les dll pour ton système ? La remarque de dourouc05 est en effet pertinente. En ajoutant le module via la ligne "QT += xml", tu n'as pas à spécifier la lib directement.

    G.

  19. #19
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 770
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Question bête : Vu tes chemins de fichier, je soupçonne que tu travailles sous windows. Pourquoi alors as tu des archives ".a" et non des ".lib" et ".dll" ?
    S'il utilise GCC/MinGW, c'est tout à fait normal qu'il ait des .a : les .lib ne sont utilisés que par Visual Studio (et d'autres compilateurs assez peu répandus).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

Discussions similaires

  1. erreur : collect2: ld returned 1 exit status
    Par MounaR dans le forum C++
    Réponses: 2
    Dernier message: 05/05/2011, 17h56
  2. error: collect2: ld returned 1 exit status
    Par tamildark dans le forum Débuter
    Réponses: 4
    Dernier message: 10/01/2011, 17h56
  3. collect2: ld returned 1 exit status
    Par marie mouse dans le forum Débuter
    Réponses: 19
    Dernier message: 17/12/2009, 16h13
  4. compilation en C: ld returned 1 exit status
    Par maldini dans le forum C
    Réponses: 3
    Dernier message: 26/07/2006, 15h20

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