Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Assimp

Sujet résolu
Anonyme
    6 avril 2021 à 8:40:03

    Bonjour, j'ai commencé à apprendre OpenGL mais j'ai un problème lors de l'utilisation d'Assimp, en chargeant des modèles 3D.

    Voici le message d'erreur :

    C:/MinGW/mingw64/x86_64-w64-mingw32/include/assimp/defs.h:53:10: fatal error: assimp/config.h: No such file or directory


    Merci d'avance :D!

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2021 à 10:05:42

      Il semble qu'on soit obligé de créer un fichier "config.h" dans le répertoire "assimp" dans votre version d'assimp.

      Si toute la configuration d'assimp est déjà OK, un fichier vide fera l'affaire.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        6 avril 2021 à 10:38:25

        Comment Assimp a-t-il été compilé/installé? Comment configures tu ton projet, quels répertoires "d'include" sont ajoutés?

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 avril 2021 à 10:53:45

          J'ai utilisé ce lien : https://github.com/assimp/assimp/releases/tag/v5.0.1,

          puis sur Source code (zip).

          Je vais ensuite dans \assimp-5.0.1\include et je déplace le dossier "assimp" dans le dossier "include" de MinGW.

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2021 à 10:59:43

            Mais ça c'est le code source, il faut le compiler.

            config.h est vraisemblablement un fichier généré lors de la configuration, il n'existe pas sous cette forme dans le code source. La preuve ici: https://github.com/assimp/assimp/blob/8f0c6b04b2257a520aaab38421b2e090204b69df/CMakeLists.txt#L214-L217

            De plus c'est une mauvaise pratique de placer les librairies externes dans le répertoire de MinGW.

            -
            Edité par SpaceIn 6 avril 2021 à 11:01:45

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 avril 2021 à 11:02:57

              J'ai toujours placé les fichiers .h dans include. Je l'ai fait pour OpenGL, Assimp, SFML, SDL...
              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2021 à 11:14:05

                Placer les headers dans un répertoire "include", c'est standard, mais pas le répertoire d'include de MinGW.

                Quoiqu'il en soit, pour ton pb, tu dois compiler et installer Assimp via CMake.

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  6 avril 2021 à 11:43:26

                  Je ne me suis jamais servi de CMake, peu importe la librairie. Je ne sais pas non plus m'en servir.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 avril 2021 à 12:40:54

                    Il est temps d'apprendre :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Si vous ne trouvez plus rien, cherchez autre chose.

                      6 avril 2021 à 12:45:45

                      Surtout que la grande majorité des librairies C et C++ open source utilisent CMake (suivi de loin par les autotools, puis Meson je dirais).

                      Pour Assimp, ça devrait pas être trop compliqué: https://github.com/assimp/assimp/blob/master/Build.md#build-from-source

                      -
                      Edité par SpaceIn 6 avril 2021 à 12:45:52

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        6 avril 2021 à 13:11:17

                        Je dois mettre les commandes dans "Build from source" dans le cmd ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 avril 2021 à 13:15:18

                          Pour faire simple, voici ce que tu peux faire:

                          - Installer CMake
                          - Récupérer le code source de Assimp (et le mettre dans un répertoire en dehors de MinGW)
                          - En ligne de commande, dans le répertoire de assimp:

                          mkdir build
                          cd build
                          cmake .. -DCMAKE_INSTALL_PREFIX="C:/MinGW/mingw64/x86_64-w64-mingw32" -DCMAKE_BUILD_TYPE=Release
                          cmake --build . --config Release
                          cmake --build . --target install --config Release


                          Voilà comme ça tu auras une installation propre d'une version Release de Assimp (bon ce sera installé dans le répertoire de MinGW, et c'est mal comme je t'ai dit, mais ça reste conforme à la philo que tu as commencé à suivre).

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            6 avril 2021 à 13:20:23

                            'cmake' n’est pas reconnu en tant que commande interne
                            ou externe, un programme exécutable ou un fichier de commandes.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 avril 2021 à 13:24:47

                              Tu dois ajouter le répertoire bin de CMake dans ta variable d'environnement PATH (recherche "Modifier les variables d'environnement" sous Windows). Il te le propose à l'installation, mais tu ne l'as pas coché j'imagine, donc tu dois le faire à la main.

                              -
                              Edité par SpaceIn 6 avril 2021 à 13:26:07

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                6 avril 2021 à 13:32:29

                                C'est fait, merci. Ensuite, je fais quoi ?

                                -
                                Edité par Anonyme 6 avril 2021 à 13:32:48

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  6 avril 2021 à 13:40:59

                                  Comment ça? Tu as compilé Assimp? Les headers, les binaires ont bien été installés là où tu voulais? Maintenant tu peux aller voir dans ton projet s'il trouve bien les headers et la librairie d'import quand tu compiles / link.

                                  Comme tu as installé ça à la sauvage dans MinGW, j'imagine que ça va fonctionner tout seul, sinon suivant le système de build (je crains la réponse Code Blocks), il faut le configurer pour qu'il trouver les répertoires d'include, les répertoires des librairies, et le nom des librairies.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    6 avril 2021 à 13:45:30

                                    J'ai eu ce message à la 3 ème ligne du cmd :

                                     unable to invoke the cl compiler.  To fix this problem, run cmake from the
                                      Visual Studio Command Prompt (vcvarsall.bat).

                                      Tell CMake where to find the compiler by setting either the environment
                                      variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
                                      the compiler, or to the compiler name if it is in the PATH.


                                    CMake Error at CMakeLists.txt:54 (PROJECT):
                                      The CMAKE_CXX_COMPILER:

                                        cl

                                      is not a full path and was not found in the PATH.

                                      To use the NMake generator with Visual C++, cmake must be run from a shell
                                      that can use the compiler cl from the command line.  This environment is
                                      unable to invoke the cl compiler.  To fix this problem, run cmake from the
                                      Visual Studio Command Prompt (vcvarsall.bat).

                                      Tell CMake where to find the compiler by setting either the environment
                                      variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
                                      to the compiler, or to the compiler name if it is in the PATH.


                                    -- Configuring incomplete, errors occurred!
                                    See also "C:/Users/Hubert/Downloads/assimp-5.0.1/build/CMakeFiles/CMakeOutput.log".
                                    See also "C:/Users/Hubert/Downloads/assimp-5.0.1/build/CMakeFiles/CMakeError.log".

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      6 avril 2021 à 13:54:56

                                      Ah oui tu utilises MinGW, fais ceci:

                                      mkdir build
                                      cd build
                                      cmake .. -DCMAKE_INSTALL_PREFIX="C:/MinGW/mingw64/x86_64-w64-mingw32" -DCMAKE_BUILD_TYPE=Release -DCMAKE_GENERATOR="MinGW Makefiles"
                                      cmake --build . --config Release
                                      cmake --build . --target install --config Release

                                      Ajoute le répertoire bin de MinGW dans ton PATH si ça ne fonctionne toujours pas.

                                      Si la compilation est trop lente, tu peux ajouter l'option -j <nombre de theads>. Contrairement à Ninja, c'est pas automatique pour make.

                                      Exemple:

                                      cmake --build . -j 8 --config Release

                                      -
                                      Edité par SpaceIn 6 avril 2021 à 14:05:42

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        6 avril 2021 à 14:23:54

                                        C'est bon, c'est fini. Mais mon IDE m'affiche toujours la même erreur.

                                        Non, plus aucune erreur ! Je me suis juste trompé de dossier. Merci :D !

                                        Une dernière question : pourquoi c'est mal de mettre les headers dans MinGW ?

                                        Une autre question (pas la dernière, du coup :)) : comment résoudre cette erreur :

                                        src\models\OBJLoader.o:OBJLoader.cpp:(.text+0xac): undefined reference to `Assimp::Importer::Importer()'
                                        src\models\OBJLoader.o:OBJLoader.cpp:(.text+0x198): undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
                                        src\models\OBJLoader.o:OBJLoader.cpp:(.text+0x311): undefined reference to `Assimp::Importer::~Importer()'
                                        src\models\OBJLoader.o:OBJLoader.cpp:(.text+0x3f3): undefined reference to `Assimp::Importer::~Importer()'

                                        -
                                        Edité par Anonyme 6 avril 2021 à 15:16:05

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          6 avril 2021 à 17:02:26

                                          C'est mal car tu pollues ton installation MinGW avec une librairie externe. De plus il existe une infinité de manière de compiler une librairie (release/debug, statique, partagée, différents niveaux d'optimisation du linker ou du compilateur, options intrinsèques à la librairie, ciblage particulier d'une architecture etc), comment faire en sorte de switcher facilement de l'une à l'autre si tout est mélangé dans le même répertoire?

                                          Les undefined reference de l'éditeur de liens viennent du fait que ton projet n'est pas bien configuré, il faut lui indiquer le nom de la librairie d'import d'Assimp (installée dans le répertoire lib), et éventuellement le répertoire où elle se trouve.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            6 avril 2021 à 21:31:01

                                            J'ai fait quelques recherches et les .dll devraient être dans "build/code/lib".

                                            Mais je n'ai pas le dossier lib.


                                            Et j'ai eu une erreur sur CMake.


                                            PS : J'ai utilisé l'application CMake (cmake-gui.exe) à l'aide de ce site : https://sites.google.com/site/gsucomputergraphics/educational/set-up-opengl?tmpl=%2Fsystem%2Fapp%2Ftemplates%2Fprint%2F&showPrintDialog=1

                                            -
                                            Edité par Anonyme 6 avril 2021 à 21:33:26

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              7 avril 2021 à 15:15:23

                                              Salut,

                                              Ben, le fait que le sous "dossier de base" s'appelle "build" devrait déjà te faire penser au fait qu'il faut compiler toi même tout le projet avant de pouvoir l'utiliser ;)

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                                              Anonyme
                                                8 avril 2021 à 19:29:31

                                                Ok, je fais comment :euh: ?

                                                Je suis un peu perdu...

                                                Voici ce que me dit CMake :

                                                The C compiler identification is GNU 8.1.0

                                                The CXX compiler identification is GNU 8.1.0

                                                Could not determine Eclipse version, assuming at least 3.6 (Helios). Adjust CMAKE_ECLIPSE_VERSION if this is wrong.

                                                Detecting C compiler ABI info

                                                Detecting C compiler ABI info - done

                                                Check for working C compiler: C:/MinGW/mingw64/bin/gcc.exe - skipped

                                                Detecting C compile features

                                                Detecting C compile features - done

                                                Detecting CXX compiler ABI info

                                                Detecting CXX compiler ABI info - done

                                                Check for working CXX compiler: C:/MinGW/mingw64/bin/g++.exe - skipped

                                                Detecting CXX compile features

                                                Detecting CXX compile features - done

                                                Shared libraries enabled

                                                Looking for DirectX...

                                                DirectX_PREFIX_PATH changed.

                                                Could not locate DirectX

                                                Looking for ZLIB...

                                                Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

                                                Could not locate ZLIB

                                                compiling zlib from sources

                                                CMake Deprecation Warning at contrib/zlib/CMakeLists.txt:1 (cmake_minimum_required):
                                                Compatibility with CMake < 2.8.12 will be removed from a future version of
                                                CMake.

                                                Update the VERSION argument <min> value or use a ...<max> suffix to tell
                                                CMake that the project does not need compatibility with older versions.

                                                Looking for sys/types.h

                                                Looking for sys/types.h - found

                                                Looking for stdint.h

                                                Looking for stdint.h - found

                                                Looking for stddef.h

                                                Looking for stddef.h - found

                                                Check size of off64_t

                                                Check size of off64_t - done

                                                Looking for fseeko

                                                Looking for fseeko - found

                                                Looking for unistd.h

                                                Looking for unistd.h - found

                                                CMake Warning (dev) at C:/Users/Hubert/Downloads/cmake-3.20.1-windows-x86_64/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
                                                The package name passed to `find_package_handle_standard_args` (rt) does
                                                not match the name of the calling package (RT). This can lead to problems
                                                in calling code that expects `find_package` result variables (e.g.,
                                                `_FOUND`) to follow a certain pattern.
                                                Call Stack (most recent call first):
                                                cmake-modules/FindRT.cmake:19 (find_package_handle_standard_args)
                                                code/CMakeLists.txt:1013 (FIND_PACKAGE)
                                                This warning is for project developers. Use -Wno-dev to suppress it.

                                                Could NOT find rt (missing: RT_LIBRARY)

                                                INFO Hunter enabled or RT-extension not found. glTF import/export will be built without Open3DGC-compression.

                                                Enabled importer formats: AMF 3DS AC ASE ASSBIN B3D BVH COLLADA DXF CSM HMP IRRMESH IRR LWO LWS MD2 MD3 MD5 MDC MDL NFF NDO OFF OBJ OGRE OPENGEX PLY MS3D COB BLEND IFC XGL FBX Q3D Q3BSP RAW SIB SMD STL TERRAGEN 3D X X3D GLTF 3MF MMD STEP

                                                Disabled importer formats:

                                                Enabled exporter formats: 3DS ASSBIN ASSXML COLLADA OBJ OPENGEX PLY FBX STL X X3D GLTF 3MF ASSJSON STEP

                                                Disabled exporter formats:

                                                CMake Deprecation Warning at tools/assimp_cmd/CMakeLists.txt:40 (cmake_minimum_required):
                                                Compatibility with CMake < 2.8.12 will be removed from a future version of
                                                CMake.

                                                Update the VERSION argument <min> value or use a ...<max> suffix to tell
                                                CMake that the project does not need compatibility with older versions.

                                                Configuring done

                                                -
                                                Edité par Anonyme 8 avril 2021 à 20:08:30

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  10 avril 2021 à 16:05:40

                                                  PS : J'ai comme IDE Eclipse avec MinGW 64 bits 8.1.0. J'ai téléchargé la version .zip de CMake. J'ai ensuite exécuté cmake-gui.exe, j'ai entré dans "Where is the source code" mon dossier Assimp, puis dans "Where to build the binaries" dans le dossize "build" de Assimp. Ensuite, je clique sur "Configure" et là, je bloque... Je dois choisir quoi comme "generator for this project" ?


                                                  Mon écran : Le choix du générateurLe choix de l'option

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    10 avril 2021 à 16:31:17

                                                    Sur tes captures, tu as sélectionné les bons...

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Si vous ne trouvez plus rien, cherchez autre chose.

                                                      10 avril 2021 à 16:38:16

                                                      Je t'ai donné les commandes à faire en ligne de commande il y a plusieurs jours, ça ne fonctionne pas comme ça?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        10 avril 2021 à 16:41:57

                                                        Euh... J'ai une erreur...


                                                        A la 4 ème ligne : collect2.exe: error: ld returned 1 exit status
                                                        mingw32-make.exe[2]: *** [tools\assimp_view\CMakeFiles\assimp_viewer.dir\build.make:350: tools/assimp_view/assimp_viewer.exe] Error 1
                                                        mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:281: tools/assimp_view/CMakeFiles/assimp_viewer.dir/all] Error 2
                                                        mingw32-make.exe: *** [Makefile:135: all] Error 2


                                                        A la 5 ème : collect2.exe: error: ld returned 1 exit status
                                                        mingw32-make.exe[2]: *** [tools\assimp_view\CMakeFiles\assimp_viewer.dir\build.make:350: tools/assimp_view/assimp_viewer.exe] Error 1
                                                        mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:281: tools/assimp_view/CMakeFiles/assimp_viewer.dir/all] Error 2
                                                        mingw32-make.exe: *** [Makefile:135: all] Error 2

                                                        -
                                                        Edité par Anonyme 10 avril 2021 à 17:07:24

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          11 avril 2021 à 0:19:15

                                                          Quelles sont les vraies erreurs? Ca c'est le message d'erreur générique à la fin du build pour dire que l'éditeur de liens est sorti en erreur, mais il y a forcément des erreurs avant et ce sont celles la qui sont importantes.
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Anonyme
                                                            11 avril 2021 à 19:22:47

                                                            A la 3 ème ligne :

                                                            CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set                                                .  You probably need to select a different build tool.
                                                            CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set                                                .  You probably need to select a different build tool.
                                                            CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
                                                            CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
                                                            -- Configuring incomplete, errors occurred!

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              12 avril 2021 à 0:22:42

                                                              SpaceIn a écrit:

                                                              Ah oui tu utilises MinGW, fais ceci:

                                                              mkdir build
                                                              cd build
                                                              cmake .. -DCMAKE_INSTALL_PREFIX="C:/MinGW/mingw64/x86_64-w64-mingw32" -DCMAKE_BUILD_TYPE=Release -DCMAKE_GENERATOR="MinGW Makefiles"
                                                              cmake --build . --config Release
                                                              cmake --build . --target install --config Release

                                                              Ajoute le répertoire bin de MinGW dans ton PATH si ça ne fonctionne toujours pas.

                                                              Si la compilation est trop lente, tu peux ajouter l'option -j <nombre de theads>. Contrairement à Ninja, c'est pas automatique pour make.

                                                              Exemple:

                                                              cmake --build . -j 8 --config Release

                                                              -
                                                              Edité par SpaceIn 6 avril 2021 à 14:05:42

                                                              Je m'autocite. Tu as fait ce que j'ai mis en gras? CMake n'arrive pas à trouver mingw32-make.exe j'imagine, qui doit se trouver... dans ton répertoire bin de MinGW.

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Problème Assimp

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown