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 :

Erreur de compilation avec mingw32-make sous Windows 10


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    A.E.S.H.
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : A.E.S.H.

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Erreur de compilation avec mingw32-make sous Windows 10
    Bonjour à toutes et à tous,

    A la fin de la compilation d'un client mpd open source (cantata (qt)) j'obtiens les erreurs suivantes :

    Nom : Capture d’écran 2019-06-06 à 17.45.21.png
Affichages : 952
Taille : 424,2 Ko

    Une âme charitable serait-elle prête à m'aider ? Je galère pour le compiler sous Windows (sous macOS aucun soucis)
    Je peux fournir autant de précisions que nécessaire bien entendu !!!

    Merci

    Eric
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    De prime abord, le problème se produit lors de la dernière étape de la compilation, à savoir, l'édition des liens: le moment où l'éditeur de liens essaye de regrouper tous les fichiers objets en un seul éditable.

    Les problème de undefined reference to XXX sont en effet typiques et indiquent que l'éditeur de liens n'a pas trouvé l'implémentation d'une fonction à laquelle tu as fait appel dans le binaire exécutable, afin de faire correspondre l'appel de la fonction avec l'adresse mémoire à laquelle la fonction commence.

    Il y a quatre raisons possibles à la survenue d'un tel problème:
    1. La fonction a été déclarée (dans un fichier d'en-tête) mais n'as pas été implémentée (dans un fichier .cpp)
    2. le fichier d’implémentation qui contient l'implémentation de la fonction appelée n'a pas été compilée
    3. le fichier objet qui contient le code binaire exécutable de la fonction généré lors de la compilation n'a pas été pris en compte par l'éditeur de liens
    4. la fonction appelée fait partie d'une bibliothèque externe qui n'est pas prise en compte (ou qui n'a pas été trouvée) par l'éditeur de liens

    Dans le cas présent, j'aurais tendance à penser que nous sommes face à la quatrième solution, parce que le problème survient sur des fonctions qui semble appartenir à une bibliothèque nommée TagLib.

    Ici, les choses sont un peu plus compliquées parce que tu semble avoir utilisé CMake pour configurer ton projet, et qu'il a tendance à cacher pas mal de choses .

    La première chose à faire selon moi serait déjà de s'assurer que CMake a bel et bien ajouté un flag -lTag ou quelque chose de très similaire (selon le nom de la bibliothèque externe) dans les options d'édition de liens.

    La deuxième chose sera de s'assurer de la présence de la bibliothèque en question sur le système et de sa disponibilité / son accessibilité dans la bonne version pour l'éditeur de liens

    Une fois ces deux points vérifiés, nous pourrons commencer par voir ce qui se passe réellement
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Candidat au Club
    Homme Profil pro
    A.E.S.H.
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : A.E.S.H.

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Salut koala01,

    Tout d'abord un grand merci à toi. En effet il faut plusieurs dépendances pour compiler Cantata (sous Windows il peut tourner avec seulement Zlib et TagLib).
    J'avais commencé avec Visual Studio 2015, mais avec plus de 29000 erreurs j'ai rapidement opté pour une autre solution.

    Ce que je peux te dire, c'est que lors que la création (ou de la compilation ?) de 'jamendoservice.cpp', que ce soit sous Visual Studio ou sous MinGW, le fichier include 'taglib.h' n'était pas trouvé.
    j'ai résolu le problème en recopiant l'intégralité des headers dans chaque sous répertoire de la bibliothèque jusqu'au répertoire taglib lui même et ce fut résolu...

    Pour être honnête, je ne comprends pas grand chose de tes explications car je n'ai jamais développé
    Si tu es d'accord, indique moi exactement quoi taper et à quel moment afin que cela puisse t'aider

    Voici dans un premier temps comment j'ai compilé Zlib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmake -G "MinGW Makefiles"*-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=C:\dev\zlib 
    mingw32-make
    mingw32-make install
    => nickel

    Voici comment j'ai compilé TagLib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DWITH_ASF=ON -DWITH_MP4=ON —DZLIB_LIBRARY=c:\dev\zlib\libzlib.dll.a -DZLIB_INCLUDE_DIR=c:\dev\zlib\include -DCMAKE_INSTALL_PREFIX=C:\dev\taglib
    mingw32-make
    mingw32-make install
    => nickel

    Et enfin Cantata (méthode trouvée après de nombreuses heures de recherches sur Google, initialement prévue pour qt4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cd build
    cmake ../src -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DENABLE_TAGLIB=OFF -DTAGLIB_FOUND=1 -DTAGLIB_INCLUDES=c:/dev/taglib/include -DTAGLIB_LIBRARIES=c:/dev/taglib/lib/libtag.a -DTAGLIB_MP4_FOUND=1 -DTAGLIB_ASF_FOUND=1 -DTAGLIB_CAN_SAVE_ID3VER=1 -DZLIB_INCLUDE_DIR=c:/dev/zlib/include -DZLIB_LIBRARY=c:/dev/zlib/lib/libzlib.dll.a -DCMAKE_INSTALL_PREFIX=c:/cantata/install -DCANTATA_WINDOWS_INSTALLER_DEST=c:/cantata -DCANTATA_MINGW_LIBS=c:/dev/MinGW/bin/mingwm10.dll;c:/dev/MinGW/bin/libgcc_s_dw2-1.dll -DCANTATA_SSL_LIBS=c:/dev/ssl/libeay32.dll;c:/dev/ssl/ssleay32.dll
    mingw32-make
    => erreurs

    Je te dis merci

    Eric

  4. #4
    Candidat au Club
    Homme Profil pro
    A.E.S.H.
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : A.E.S.H.

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Coucou koala01, voici la sortie de cmake :

    C:\cantata\build>cmake ../src -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DENABLE_TAGLIB=OFF -DTAGLIB_FOUND=1 -DTAGLIB_INCLUDES=c:/dev/taglib/include -DTAGLIB_LIBRARIES=c:/dev/taglib/lib/libtag.a -DTAGLIB_MP4_FOUND=1 -DTAGLIB_ASF_FOUND=1 -DTAGLIB_CAN_SAVE_ID3VER=1 -DZLIB_INCLUDE_DIR=c:/dev/zlib/include -DZLIB_LIBRARY=c:/dev/zlib/lib/libzlib.dll.a -DCMAKE_INSTALL_PREFIX=c:/cantata/install -DCANTATA_WINDOWS_INSTALLER_DEST=c:/cantata -DCANTATA_MINGW_LIBS=c:/dev/MinGW/bin/mingwm10.dll;c:/dev/MinGW/bin/libgcc_s_dw2-1.dll -DCANTATA_SSL_LIBS=c:/dev/ssl/libeay32.dll;c:/dev/ssl/ssleay32.dll
    -- The C compiler identification is GNU 7.3.0
    -- The CXX compiler identification is GNU 7.3.0
    -- Check for working C compiler: C:/dev/Qt/Tools/mingw730_32/bin/gcc.exe
    -- Check for working C compiler: C:/dev/Qt/Tools/mingw730_32/bin/gcc.exe -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: C:/dev/Qt/Tools/mingw730_32/bin/g++.exe
    -- Check for working CXX compiler: C:/dev/Qt/Tools/mingw730_32/bin/g++.exe -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    CMake Deprecation Warning at CMakeLists.txt:22 (cmake_policy):
    The OLD behavior for policy CMP0020 will be removed from a future version
    of CMake.

    The cmake-policies(7) manual explains that the OLD behaviors of all
    policies are deprecated and that a policy should be set to OLD only under
    specific short-term circumstances. Projects should be ported to the NEW
    behavior and not rely on setting a policy to OLD.


    -- Performing Test TAGLIB_OPUS_FOUND
    -- Performing Test TAGLIB_OPUS_FOUND - Success
    -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
    -- Could NOT find FFMPEG (missing: LIBAVCODEC_LIBRARY LIBAVFORMAT_LIBRARY LIBAVUTIL_LIBRARY FFMPEG_INCLUDE_DIR)
    -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
    -- Could NOT find MPG123 (missing: MPG123_LIBRARY MPG123_INCLUDE_DIR)
    -- Found ZLIB: c:/dev/zlib/lib/libzlib.dll.a (found version "1.2.11")

    -----------------------------------------------------------------------------
    -- The following external packages were located on your system.
    -- This installation will have the extra features provided by these packages.
    -----------------------------------------------------------------------------
    * Qt5Multimedia - MPD HTTP stream playback.

    -----------------------------------------------------------------------------
    -- The following OPTIONAL packages could NOT be located on your system.
    -- Consider installing them to enable more features from this software.
    -----------------------------------------------------------------------------
    * libavcodec/libavutil/libavformat <http://ffmpeg.org>
    ReplayGain calculation.
    * libmpg123 <http://www.mpg123.de>
    ReplayGain calculation.

    -----------------------------------------------------------------------------

    -- Configuring done
    -- Generating done
    CMake Warning:
    Manually-specified variables were not used by the project:

    CANTATA_MINGW_LIBS


    -- Build files have been written to: C:/cantata/build

Discussions similaires

  1. Segfault en compilant avec Code::Blocks sous Windows
    Par simac dans le forum wxWidgets
    Réponses: 12
    Dernier message: 04/06/2017, 19h57
  2. problème de compilation avec code blocks sous windows 8
    Par serginophp dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 10/01/2016, 15h59
  3. Cross-compilation avec GCC 4 sous Windows pour Linux
    Par dourouc05 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/04/2009, 18h25
  4. Compiler un programme Boost sous Windows avec Cygwin
    Par asher256 dans le forum Boost
    Réponses: 3
    Dernier message: 20/11/2008, 21h07
  5. link sous Eclipse avec mingw32-make et DLL Visual
    Par eag35 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/04/2007, 09h22

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