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 sous windows. (avec mingw)


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Erreur de compilation sous windows. (avec mingw)
    Salut.

    Sous linux mon code compile mais pas sous windows.

    Voici l'erreur : error : expected primary expression before 'struct'
    return interface.intersects(ray, segment, info);
    in member function odfaeg::physic::BoundingSphere::onIntersects(odfaeg::physic::BaseInterface&);

    Dans le fichier boundingSphere.h :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool onIntersects (BaseInterface& interface, CollisionResultSet::Info& info);

    CollisionResultSet est une structure dans une classe :

    Code cpp : 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
     
    class CollisionResultSet {
                public :
                struct Info {
                    Info() {
                        entity = nullptr;
                        center = math::Vec3f(0, 0, 0);
                        mtu = math::Vec3f(0, 0, 0);
                        nearestVertexIndex1 = -1;
                        nearestPtIndex1 = -1;
                        nearestEdgeIndex1 = -1;
                        nearestFaceIndex1 = -1;
                        nearestVertexIndex2 = -1;
                        nearestPtIndex2 = -1;
                        nearestEdgeIndex2 = -1;
                        nearestFaceIndex2 = -1;
                    }
                    math::Vec3f mtu, center;
                    graphic::Entity* entity;
                    int nearestVertexIndex1;
                    int nearestPtIndex1;
                    int nearestEdgeIndex1;
                    int nearestFaceIndex1;
                    int nearestVertexIndex2;
                    int nearestPtIndex2;
                    int nearestEdgeIndex2;
                    int nearestFaceIndex2;
                };

    Voila merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Non rien.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    c'est pas grave, tu as encore raté ton constructeur.

    member initialiser list
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui j'ai essayé mais ça ne résoud pas le problème. :


    Code cpp : 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
     
     struct Info {
                    Info() : entity(nullptr), center(0, 0, 0), mtu(0, 0, 0), nearestVertexIndex1(-1),
                    nearestPtIndex1(-1), nearestEdgeIndex1(-1), nearestFaceIndex1(-1),
                    nearestVertexIndex2(-1), nearestPtIndex2(-1), nearestEdgeIndex2(-1), nearestFaceIndex2(-1) {
     
                    }
                    math::Vec3f mtu, center;
                    graphic::Entity* entity;
                    int nearestVertexIndex1;
                    int nearestPtIndex1;
                    int nearestEdgeIndex1;
                    int nearestFaceIndex1;
                    int nearestVertexIndex2;
                    int nearestPtIndex2;
                    int nearestEdgeIndex2;
                    int nearestFaceIndex2;
                };

    J'ai même essayé en retirant carrément le constructeur mais même erreur.

    PS : Comment on fait encore pour définir le constructeur d'une classe interne dans le .cpp ?

    Merci.

  5. #5
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    expected primary expression before 'struct'
    C'est a 99% un problème d'include selon moi.... Il ne doit pas trouver CollisionResultSet

    PS : Comment on fait encore pour définir le constructeur d'une classe interne dans le .cpp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CollisionResultSet::Info::Info(){}
    PS: JE sais pas ce qui me fait le plus peur... Que tu veuilles faire une moteur de jeu où que tu veuilles faire un moteur de jeu et que tu sais même pas faire un constructeur dans un cpp...
    Homer J. Simpson


  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui il ne le trouve pas mais le plus bizarre c'est qu'il compile le module physique sans problème (là il le trouve) et quand il compile le module graphique il ne le trouve plus ...

  7. #7
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Probablement tes répertoires de recherche des fichiers d’en-têtes passés au compilateur qui ne sont pas bons, non ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas, j'ai renseigné tout les répertoires avec cmake, et les classe BoundingSphere et CollisionResultSet sont dans le même répetoire, ce n'est donc pas un répertoire externe, logiquement il devrait le trouver sans problème...

    Mais c'est pas le seul problème que j'ai eu, j'ai du mettre le dossier include de opengl dans le répertoire include de mingw, sinon, il ne le trouvait pas, même en le renseignant dans le path...

    Mingw à vraiment du mal à trouver certains répertoires ..., il y en a qu'il trouve, d'autre pas, bref, c'est le bordel, et j'y comprend plus rien. :/

  9. #9
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    À tout hasard, si tu as plusieurs fichiers qui ont le même nom (mais dans des répertoires différents), vérifier que les « include guards » (#ifdef truc) ne soient pas basé sur la même valeur. Ça peut arriver lorsqu’ils sont générés par certains IDE : ils ne prend que le nom du fichier pour générer la clé, pas le namespace --> ça merde si tu as deux fichiers qui ont le même nom.

  10. #10
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Si tu utilises CMake, le problème provient de l'utilisation que tu en fais, car notamment pour OpenL, un find_package( OpenGL ) définira les chemins d'include et les libs nécessaires.
    J'aimerais bien voir ton/tes CMakeLists.txt...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  11. #11
    Invité
    Invité(e)
    Par défaut
    Le voici :

    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
    37
    38
     
    # include the ODFAEG specific macros
    include(${PROJECT_SOURCE_DIR}/cmake/Macros.cmake)
     
    set(INCROOT ${PROJECT_SOURCE_DIR}/include/odfaeg/Physics)
    set(SRCROOT ${PROJECT_SOURCE_DIR}/src/odfaeg/Physics)
    set(SRC
     
    	${INCROOT}/export.hpp
    	${INCROOT}/collisionResultSet.hpp
    	${SRCROOT}/collisionResultSet.cpp
    	${INCROOT}/boundingVolume.h
    	${INCROOT}/boundingSphere.h
    	${SRCROOT}/boundingSphere.cpp
    	${INCROOT}/boundingEllipsoid.h
    	${SRCROOT}/boundingEllipsoid.cpp
    	${INCROOT}/boundingBox.h
    	${SRCROOT}/boundingBox.cpp
    	${INCROOT}/orientedBoundingBox.h
    	${SRCROOT}/orientedBoundingBox.cpp
    	${INCROOT}/boundingPolyhedron.h
    	${SRCROOT}/boundingPolyhedron.cpp
    	${INCROOT}/affector.h
    	${SRCROOT}/affector.cpp
    	${INCROOT}/emmiters.h
    	${INCROOT}/emissionInterface.h
    	${SRCROOT}/emitter.cpp
    	${INCROOT}/particule.h
            ${SRCROOT}/particle.cpp
            ${INCROOT}/particuleSystem.h
    	${SRCROOT}/particleSystem.cpp)
    include_directories(${CMAKE_INCLUDE_PATH})
    link_directories(${CMAKE_LIBRARY_PATH})
    find_package (SFML 2 REQUIRED)
    sfgl_add_library(odfaeg-physics
    				 SOURCES ${SRC}
    				 DEPENDS odfaeg-core odfaeg-math)
    target_link_libraries (odfaeg-physics ${SFML_LIBRARIES})

  12. #12
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include_directories(${CMAKE_INCLUDE_PATH})
    link_directories(${CMAKE_LIBRARY_PATH})
    Je n'ai jamais eu à faire cela; il y a quoi dans ces 2 variables?
    Tu ne recherches jamais OpenGL? Pas étonnant qu'il ne le trouve pas...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  13. #13
    Invité
    Invité(e)
    Par défaut
    Si, je recherche opengl.

    include_directories(${CMAKE_INCLUDE_PATH})
    link_directories(${CMAKE_LIBRARY_PATH})

    Ca contient les chemins vers les librairies externes contenues dans le dossier de mon projet, mais tu as raison, je pourrais enlever cela car, désormais j'utilise find pour les trouver.

    Sinon, je cherche bien opengl et tout ça mais dans un autre module, le module graphique.

  14. #14
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Et donc MinGW ne trouve pas OpenGL avec les chemins définis par le find_package?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  15. #15
    Invité
    Invité(e)
    Par défaut
    Non ce n'est pas openGL qu'il ne trouve pas mais juste un fichier.h de mon projet, lorsque je n'avais pas encore créer la structure CollisionResultSet ça compilait.

  16. #16
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Mais c'est pas le seul problème que j'ai eu, j'ai du mettre le dossier include de opengl dans le répertoire include de mingw, sinon, il ne le trouvait pas, même en le renseignant dans le path...
    Il ne le trouvait donc pas, malgré le find_package?

    Tu as toujours ton problème d'origine?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  17. #17
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Donc, c'est ce .h qui est mal fait.
    Par hasard, est-ce que l'un des includes n'est pas utilisé ailleurs dans le programme. Si c'est le cas, c'est probablement qu'il te manque la lib correspondante.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  18. #18
    Invité
    Invité(e)
    Par défaut
    Donc, c'est ce .h qui est mal fait.
    Par hasard, est-ce que l'un des includes n'est pas utilisé ailleurs dans le programme.
    Si, enfin, on dirait que mon fichier CollisionResultSet est mal fait.

    Maintenant est ce que c'est parce que je suis passé d'un compilateur 64 bits à 32 bits que j'ai cette erreur ? (Ca aussi c'est possible car sous linux j'utilise un compilateur 64 bits et là ça compile)

    Bref je ne vois pas du tout d'ou peux venir l'erreur. :/

  19. #19
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    On peut voir le fichier complet?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  20. #20
    Invité
    Invité(e)
    Par défaut
    Ok le voici :

    Code cpp : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    #ifndef ODFAEG_COLLISION_RESULT_SET
    #define ODFAEG_COLLISION_RESULT_SET
    #include <vector>
    #include "../Math/vec4.h"
    namespace odfaeg {
        namespace graphic {
            class Entity;
        }
        namespace physic {
            class CollisionResultSet {
                public :
                struct Info {
                    Info() {
                        entity = nullptr;
                        center = math::Vec3f(0, 0, 0);
                        mtu = math::Vec3f(0, 0, 0);
                        nearestVertexIndex1 = -1;
                        nearestPtIndex1 = -1;
                        nearestEdgeIndex1 = -1;
                        nearestFaceIndex1 = -1;
                        nearestVertexIndex2 = -1;
                        nearestPtIndex2 = -1;
                        nearestEdgeIndex2 = -1;
                        nearestFaceIndex2 = -1;
                    }
                    math::Vec3f mtu, center;
                    graphic::Entity* entity;
                    int nearestVertexIndex1;
                    int nearestPtIndex1;
                    int nearestEdgeIndex1;
                    int nearestFaceIndex1;
                    int nearestVertexIndex2;
                    int nearestPtIndex2;
                    int nearestEdgeIndex2;
                    int nearestFaceIndex2;
                };
                static void pushCollisionInfo(Info info) {
                    infos.push_back(info);
                }
                static Info popCollisionInfo() {
                    Info info;
                    if (infos.size() > 0) {
                        info = infos.back();
                        infos.pop_back();
                    }
                    return info;
                }
                static void clear() {
                    infos.clear();
                }
                private :
                static std::vector<Info> infos;
            };
        }
    }
    #endif

Discussions similaires

  1. Compilation de QMYSQL sous Windows avec MinGW
    Par zebedee dans le forum Bases de données
    Réponses: 19
    Dernier message: 09/08/2012, 00h48
  2. Compilation sous windows avec devc++
    Par dr_octopus74 dans le forum Dev-C++
    Réponses: 4
    Dernier message: 17/01/2007, 22h48
  3. erreur de link sous wxWidgets avec Mingw
    Par pyoda dans le forum wxWidgets
    Réponses: 4
    Dernier message: 28/04/2006, 19h03

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