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

PhysX et APEX Discussion :

Erreur lors de la compilation sous Linux


Sujet :

PhysX et APEX

  1. #1
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut Erreur lors de la compilation sous Linux
    Bonjour,
    Je fait actuellement actuellement une petite application pour tester l’intégration de PhysX dans Ogre.
    J'ai donc réalisé ma petite appli sur windows avec visual studio sans trop de gros souci .
    J'ai voulu maintenant tester cette même application sous linux mais cette fois ci j'ai quelques souci lord de la compilation dans les headers du sdk de physX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /usr/include/PhysX/PhysXAPI/foundation/PxPreprocessor.h |289| error: size of array ‘PxCompileTimeAssert0’ is negative
     
    /usr/include/PhysX/PhysXAPI/foundation/linux/PxLinuxIntrinsics.h |91| error: ‘isfinite’ was not declared in this scope
    /usr/include/PhysX/PhysXAPI/foundation/linux/PxLinuxIntrinsics.h |7| error: ‘isfinite’ was not declared in this scope
    Je suis sous Ubuntu 11.04, code::blocks 10.05 et PhysX 3.0.1 LINUX SDK Core
    mes include:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /usr/include/OGRE
    /usr/include/OIS
    /usr/include/PhysX/PhysXAPI
    /usr/include/PhysX/PhysXAPI/cooking
    /usr/include/PhysX/PhysXAPI/extensions
    /usr/include/PhysX/PhysXAPI/foundation
    /usr/include/PhysX/PhysXAPI/task
    /usr/include/PhysX/PhysXAPI/deprecated
    Pour la première erreur PxCompileTimeAssert0 je n'est aucune idée pour résoudre cette erreur.
    Par contre pour les 2 autres erreur j'ai appris en cherchant que le isfinite est une fonction de math.h qui est inclue dans le fichier /usr/include/PhysX/PhysXAPI/foundation/linux/PxLinuxIntrinsics.h

    Dans mon fichier math.h jai bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* Return nonzero value if X is not +-Inf or NaN.  */
    # ifdef __NO_LONG_DOUBLE_MATH
    #  define isfinite(x) \
         (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
    # else
    #  define isfinite(x) \
         (sizeof (x) == sizeof (float)					      \
          ? __finitef (x)							      \
          : sizeof (x) == sizeof (double)					      \
          ? __finite (x) : __finitel (x))
    # endif
    voila je ne sait plus trop quoi faire maintenant
    Si quelqu'un a une petite idée pour résoudre ce souci ou la déja rencoutré ??? merci

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    ton math.h est bien avant les autres includes?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Le problème est que le erreur provienne physx et non de mon code.
    Avec le sdk de windows cela marche correctement

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    méfie toi,
    si certains header sont exactement les mêmes entre linux et windows, c'est pas toujours le cas...

    l'inclusion des différents headers se fait bien dans le bon ordre? tu as vérifié les interdépendances entre eux?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    ok merci, je vais regarder dans cette direction, d'autant plus que je doit refaire tous les include de mon projet a cause de inclusion cyclique qui me cause des class de base non défini et autre joyeuseté

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Montre l'ordre des includes et la ligne qui pose un souci dans le fichier :

    /usr/include/PhysX/PhysXAPI/foundation/PxPreprocessor.h

    Jc

  7. #7
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Mes include:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <PxPhysicsAPI.h>
    #include <PxExtensionsAPI.h>
    #include <PxDefaultErrorCallback.h>
    #include <PxDefaultAllocator.h>
    et la ou sa plante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    namespace PxPackValidation
    {
    	// Ensure that the application hasn't tweaked the pack value to less than 8, which would break
    	// matching between the API headers and the binaries
    	// This assert works on win32/win64/360/ps3, but may need further specialization on other platforms.
    	// Some GCC compilers need the compiler flag -malign-double to be set.
     
    	struct PackTest { char _; long long a; };
    ===>PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PackTest, a) == 8);
    }
    En tous cas merci de l'aide

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // Some GCC compilers need the compiler flag -malign-double to be set.
    As-tu utiliser cette option ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ===>PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PackTest, a) == 8);
    Trouve ces macros et montre ce qu'ils font. En principe, tu pourrais le changer mais il vaut mieux changer les macros directement.

    Jc

  9. #9
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui l'alignement (pack) sur 64bits est obligatoire d'après ce qu'ils te mettent donc tu devras très certainement le forcer pour qu'il soit réalisé sinon le calage des données dans les structures et les classes ne marchera pas... en général il est à 4 (32 bits) par défaut
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  10. #10
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par fearyourself Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // Some GCC compilers need the compiler flag -malign-double to be set.
    As-tu utiliser cette option ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ===>PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PackTest, a) == 8);
    Trouve ces macros et montre ce qu'ils font. En principe, tu pourrais le changer mais il vaut mieux changer les macros directement.

    Jc
    Super
    l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/include/PhysX/PhysXAPI/foundation/PxPreprocessor.h |289| error: size of array ‘PxCompileTimeAssert0’ is negative
    a disparu en définissant -malign-double

    Il ne me reste plus qu'a me pencher sur le ‘isfinite’ qui doit venir d'un souci de l'include de math.h je devrais m'en sortir .
    En tous cas merci pour votre aide précieuse

  11. #11
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    J'ai pu résoudre, grâce a votre aide les 2 problèmes de mon premier post . J'arrive enfin a passé les première étapes de la compilation.
    En revanche j'ai maintenant un problème au niveau du linkage (je ne sais pas si le terme est corrècte ) des librairies de physx:

    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
    39
    40
    41
    42
    43
     
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterControllerManager.cpp.o)||In function `CharacterControllerManager':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerManager.cpp|104|undefined reference to `Gu::MeshQuery::createMeshQueryContext()'|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerManager.cpp|104|undefined reference to `Gu::MeshQuery::createMeshQueryContext()'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctBoxController.cpp.o)||In function `BoxController':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctBoxController.cpp|81|undefined reference to `PxRigidBodyExt::updateMassAndInertia(PxRigidBody&, float, physx::pubfnd3::PxVec3 const*)'|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctBoxController.cpp|81|undefined reference to `PxRigidBodyExt::updateMassAndInertia(PxRigidBody&, float, physx::pubfnd3::PxVec3 const*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCapsuleController.cpp.o)||In function `CapsuleController':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCapsuleController.cpp|85|undefined reference to `PxRigidBodyExt::updateMassAndInertia(PxRigidBody&, float, physx::pubfnd3::PxVec3 const*)'|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCapsuleController.cpp|85|undefined reference to `PxRigidBodyExt::updateMassAndInertia(PxRigidBody&, float, physx::pubfnd3::PxVec3 const*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxUserBox(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|206|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxUserCapsule(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|239|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxMesh(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|303|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, unsigned int, Gu::Triangle const*, PxSweepHit&, unsigned int, unsigned int const*, Gu::Triangle const*, unsigned int const*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxBox(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|343|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxSphere(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|378|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepBoxCapsule(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|434|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleMesh(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|503|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, unsigned int, Gu::Triangle const*, PxSweepHit&, unsigned int, unsigned int const*, Gu::Triangle const*, unsigned int const*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleBox(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|547|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleSphere(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|606|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleCapsule(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|649|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleUserCapsule(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|693|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterController.cpp.o)||In function `(anonymous namespace)::SweepCapsuleUserBox(Cct::SweepTest const*, Cct::SweptVolume const*, Cct::TouchedGeom const*, PxExtendedVec3 const&, physx::pubfnd3::PxVec3 const&, Cct::SweptContact&)':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterController.cpp|737|undefined reference to `Gu::GeometryQuery::sweep(physx::pubfnd3::PxVec3 const&, float, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxGeometry const&, physx::pubfnd3::PxTransform const&, PxSweepHit&, unsigned int, Gu::MeshQueryContext*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterControllerCallbacks.cpp.o)||In function `outputMeshToStream':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerCallbacks.cpp|194|undefined reference to `Gu::MeshQuery::overlapTriangleMesh(PxGeometry const&, physx::pubfnd3::PxTransform const&, PxTriangleMeshGeometry const&, physx::pubfnd3::PxTransform const&, Gu::MeshQueryContext&, bool)'|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerCallbacks.cpp|225|undefined reference to `Gu::MeshQuery::getTriangle(PxTriangleMeshGeometry const&, physx::pubfnd3::PxTransform const&, unsigned int, Gu::Triangle&, Gu::Triangle*, unsigned int*)'|
    /usr/lib/physx/libPhysX3CharacterKinematicDEBUG.a(CctCharacterControllerCallbacks.cpp.o)||In function `outputHeightFieldToStream':|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerCallbacks.cpp|271|undefined reference to `Gu::MeshQuery::overlapHeightField(PxGeometry const&, physx::pubfnd3::PxTransform const&, PxHeightFieldGeometry const&, physx::pubfnd3::PxTransform const&, Gu::MeshQueryContext&)'|
    /home/metalhead/Work/test/PhysX-3.0.1_LINUX_SDK_Source/PhysXSDK/SDKs/compiler/linux32/../../PhysXCharacterKinematic/src/CctCharacterControllerCallbacks.cpp|302|undefined reference to `Gu::MeshQuery::getTriangle(PxHeightFieldGeometry const&, physx::pubfnd3::PxTransform const&, unsigned int, Gu::Triangle&, Gu::Triangle*, unsigned int*)'|
    /usr/lib/ois/OIS.so||undefined reference to `vtable for OIS::Exception'|
    /usr/lib/ois/OIS.so||undefined reference to `typeinfo for OIS::Exception'|
    ||=== Build finished: 24 errors, 0 warnings ===|
    J’obtiens des erreurs différentes en fonction de la position des librairies. Je l'est mis dans l'ordre conseillé dans le forum de physx: http://forums.developer.nvidia.com/i...rt=#entry19858

    Ci joint la capture du linker settings de codeblocks


    je suis toujours sur codeblock 10.05 et ubuntu 11.04

    Merci de votre aide.

  12. #12
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    as tu bien mis tous les .cpp et .so dans la commande de linkage?

    s'il trouve pas certaines fonction lors du linkage ça me parait venir de ça...

    tes headers permettent de dire au linker pour ce module de code tu auras tels et tels trucs qui existent ailleurs (dans une lib ou un autre module que tu vas compiler en même temps)... leur ordre est donc important car il permet de définir les entrée de la table de linkage externe et interne au module que crée le compilateur

    le linker va lier tous les modules de code compiler et résoudre les liaisons externes pour finaliser la création de l'exécutable (ou d'une lib éventuellement)... lui va donc planté si une référence n'est pas remplie grace à la table d'exportation de référence des lib ou de tous tes .cpp compilés

    c'est comme si tu dirigeais la lecture de quelqu'un et que tu lui dises de lire des pages d'un manuel technique qui n'existe pas pour faire une action...

    je pense qu'il te manque donc des .cpp ou .so, cherche dans tous les fichiers de physX que tu as les noms des éléments qui te manque...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  13. #13
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Bonjour et merci de ta réponse,
    Pour commencer, je ne sait pas ce que tu veut dire par "mis tous les .cpp dans la commande de linkage".
    Pour les .so, j'ai mis tous les fichiers .a de physX, qui doivent être un équivalent des .so, dans la partie linker settings (comme c'est le cas sur la screen de mon précédent post) et dans l'odre indiqué dans le post : http://forums.developer.nvidia.com/i...rt=#entry19858

    Pour la première erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PhysXCharacterKinematic/src/CctCharacterControllerManager.cpp|104|undefined reference to `Gu::MeshQuery::createMeshQueryContext()
    la fonction createMeshQueryContext() est dans le fichier /usr/include/PhysXGeomUtils/headers/GuMeshQuery.h
    /usr/include/PhysXGeomUtils/src/GuMeshQuery.cpp

    Elle devrait donc ce trouver logiquement dans la lib /usr/lib/physx/libGeomUtilsDEBUG.a que j'ai bien ajouté dans ma configuration

    Apres avoir lu ta réponse, j'ai essayé d'ajouter #include <GuMeshQuery.h>
    avant #include <PxControllerManager.h> dans mon code mais cela ne change rien.

    Edit: je vien de me rendre compte que j'utilise le sdk 3.0.1 je vais essayer avec le 3.1.0

  14. #14
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui normalement le .a est un fichier contenant l'équivalent de plusieurs .cpp précompilés sans linkage, pour permettre des générations d'exécutable plus rapide... ce sont donc des archives contenant plusieurs l'équivalent de plusieurs .o

    les .so sont l'équivalent des .dll sous windows, des bibliothèques de fonction ou de classe lié statiquement ou dynamiquement...

    oui d'une version de sdk à l'autre il peuvent réorganiser plus ou moins le code méfie toi...

    pour la compilation l'ordre des .h est important, pour le linkage tu t'en fous... la seule obligation c'est que tous les blocs de code compilés existent pour que les adresses externes à chacun d'eux soient résolues par le linker

    l'idée c'est que les .a sont sensés limiter la taille de la ligne de commande du compilateur...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  15. #15
    lpa
    lpa est déconnecté
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    oui d'une version de sdk à l'autre il peuvent réorganiser plus ou moins le code méfie toi...
    En effet dans la 3.1 ils ont réorganisé pas mal de chose, je trouve cela plus claire. Il ont ajouté un namespace et de nouvelle lib mais j'ai toujours un souci au niveau du link .

    A configuration preque identique je vois que je ne suis pas le seul a avoir ce genre de probleme
    http://forums.developer.nvidia.com/i...rt=#entry21603

    Edit:
    Whouhouuu en ajoutant:
    -lPhysX3Cooking -lPhysX3 -lSimulationController -lLowLevel -lPhysXProfileSDK -lPhysX3Extensions -lFoundation -lSceneQuery -lGeomUtils -lPhysX3Common -lPhysX3CharacterKinematic -lPvdRuntime -lRepX3 -lPxTask -lPhysX3Vehicle -lLowLevelCloth
    Dans "Other linker options" j'ai n'est plus que les erreurs lié a OIS

    Merci pour l'aide.

  16. #16
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    -l sert à chargé des .so donc à linker des lib

    au moins ça avance
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/05/2014, 23h03
  2. erreur a la compilation sous linux
    Par superC dans le forum wxWidgets
    Réponses: 40
    Dernier message: 10/03/2007, 12h54
  3. [mono] Compilation sous linux, erreur dans windows
    Par AlexandreP dans le forum Mono
    Réponses: 6
    Dernier message: 18/08/2006, 19h56
  4. erreur de compilation sous linux
    Par petdelascar dans le forum C
    Réponses: 11
    Dernier message: 21/12/2005, 20h10

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