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 :

[PhysX] Impossible de créer une Foundation


Sujet :

PhysX et APEX

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut [PhysX] Impossible de créer une Foundation
    Bonjour,

    Après avoir installé le Physx SDK 3.3 sur ma machine (windows 64 bits), j'ai tout d'abord testé une exécution des samples et tout se passe bien.

    J'essaye désormais d'utiliser les SPH de physx. A priori il faut avant tout instancier la classe Foundation en faisant ceci :

    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
     
    #include <extensions/PxDefaultErrorCallback.h>
    #include <extensions/PxDefaultAllocator.h> 
    #include <foundation/PxFoundation.h> 
    #include <PxPhysicsAPI.h>
     
    #include <iostream>
     
    using namespace physx;
     
    #pragma comment(lib, "PhysX3_x64.lib")
    #pragma comment(lib, "Foundation.lib")
    #pragma comment(lib, "PhysX3Extensions.lib")
    #pragma comment(lib, "PhysX3Cooking_x64.lib")
    #pragma comment(lib, "PxTask.lib")
     
    int main(int argc, char *argv[])
    {
    	bool recordMemoryAllocations = true;
    	PxDefaultErrorCallback gDefaultErrorCallback;
    	PxDefaultAllocator gDefaultAllocatorCallback;
     
    	PxFoundation *mFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback);
     
    	if(!mFoundation)
    		std::cout<<"PxCreateFoundation failed!"<<std::endl;
     
     
    	return 0;
    }
    Comme vous pourrez vous en apercevoir, ce code est directement puisé du user guide de nvidia. Je pense avoir correctement installé physx, toutefois je ne trouve nulle part de fichier "Foundation.lib", ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1>------ Début de la génération*: Projet*: physxFluid, Configuration*: Debug Win32 ------
    1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'Foundation.lib'
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    J'utilise Visual Studio 2012 professionnel.

    J'ai aussi suivi le tutoriel de physx sur developpez mais il s'agit de la version 3.1, et on dirait que tout ou quasiment a changé. D'ailleurs sur le site de nvidia on ne peut télécharger que la dernière version (3.3) ...

    Avez vous une idée sur ce problème ? Votre aide serait des plus précieuses car je ne vois vraiment pas !

    Cordialement,

    Muska17

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 027
    Billets dans le blog
    135
    Par défaut
    Bonjour,

    Recherchez le fichier Foundation.lib sur votre disque dur. Une fois que vous l'avez trouvé, il faut rajouter le dossier contenant le fichier dans les configurations de Visual (les chemins de recherche de bibliothèque).
    Ce cours explique en détails comment ça marche : http://alexandre-laurent.developpez....-bibliotheque/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Bonjour,

    J'ai bien pensé à faire une recherche de Foundation.lib sur mon disque dur mais je n'ai pas de tel fichier ... J'ai également lié tous les .lib possibles mais sans succès, et j'ai bien pris soin de rajouter les dossiers dans l'éditeur de liens de VS12.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 027
    Billets dans le blog
    135
    Par défaut
    Pour Foundation, il faut ajouter : PhysX3Extensions.lib dans les bibliothèques à inclure dans Visual.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Oh bon sang ... j'ai laissé un pragma comment malheureux d'un tuto physx 3.1 ...

    Maintenant la compilation réussit mais lors de l'exécution :

    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
     
    1>libcmt.lib(invarg.obj) : error LNK2005: __invoke_watson déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0dat.obj) : error LNK2005: __amsg_exit déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0dat.obj) : error LNK2005: __cexit déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0dat.obj) : error LNK2005: __exit déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0dat.obj) : error LNK2005: __initterm_e déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0dat.obj) : error LNK2005: _exit déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(mlock.obj) : error LNK2005: __lock déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(mlock.obj) : error LNK2005: __unlock déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(winapisupp.obj) : error LNK2005: ___crtSetUnhandledExceptionFilter déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(winapisupp.obj) : error LNK2005: ___crtTerminateProcess déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(winapisupp.obj) : error LNK2005: ___crtUnhandledException déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(winxfltr.obj) : error LNK2005: __XcptFilter déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(crt0init.obj) : error LNK2005: ___xi_a déjà défini(e) dans MSVCRTD.lib(cinitexe.obj)
    1>libcmt.lib(crt0init.obj) : error LNK2005: ___xi_z déjà défini(e) dans MSVCRTD.lib(cinitexe.obj)
    1>libcmt.lib(crt0init.obj) : error LNK2005: ___xc_a déjà défini(e) dans MSVCRTD.lib(cinitexe.obj)
    1>libcmt.lib(crt0init.obj) : error LNK2005: ___xc_z déjà défini(e) dans MSVCRTD.lib(cinitexe.obj)
    1>libcmt.lib(wsetloca.obj) : error LNK2005: __configthreadlocale déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>libcmt.lib(errmode.obj) : error LNK2005: ___set_app_type déjà défini(e) dans MSVCRTD.lib(MSVCR110D.dll)
    1>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRTD' et les autres bibliothèques*; utilisez /NODEFAULTLIB:library
    1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: conflit entre la bibliothèque par défaut 'libcmt.lib' et les autres bibliothèques*; utilisez /NODEFAULTLIB:library
    1>G:\projects\physxFluid\Debug\physxFluid.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
    On dirait que j'ai un problème d'une part avec la librairie MSVCRTD qui à l'air d'être liée plusieurs fois ... Par contre ça à l'air bon du côté de physx !

    Edit : j'ai corrigé ce problème en modifiant la bibliothèque runtime (remplacement de /MD par /MT).

    J'ai un autre problème qui apparaît alors lors de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1>------ Début de la génération : Projet : physxFluid, Configuration : Debug Win32 ------
    1>  main.cpp
    1>c:\physx\physx-3.3.0_pc_sdk_core\include\foundation\pxpreprocessor.h(323): fatal error C1189: #error :  Exactly one of NDEBUG and _DEBUG needs to be defined by preprocessor
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 027
    Billets dans le blog
    135
    Par défaut
    Toujours dans les paramètres du projet, dans les define. Il semble qu'il y a des define qui rentre en collision. SInon, changez la compilation entre debug et release, ça peut aussi être une cause.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Je suis passé en mode release mais j'obtiens le même message.

    Par contre je n'ai trouvé de "define" dans les paramètres de projet ...

    Merci beaucoup pour votre patience ...

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    J'ai essayé la même chose sur linux avec gcc :

    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
     
    #include <extensions/PxDefaultErrorCallback.h>
    #include <extensions/PxDefaultAllocator.h>
    #include <foundation/PxFoundation.h>
    #include <PxPhysicsAPI.h>
     
    #include <iostream>
     
    using namespace physx;
     
    int main(int argc, char *argv[])
    {
    	bool recordMemoryAllocations = true;
    	PxDefaultErrorCallback gDefaultErrorCallback;
    	PxDefaultAllocator gDefaultAllocatorCallback;
     
    	PxFoundation *mFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback);
     
    	if(!mFoundation)
    			std::cout<<"PxCreateFoundation failed!"<<std::endl;
     
    	return 0;
    }
    Mon Makefile de fortune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    COMPILER=g++
    OPTIONS=-std=gnu++0x
    LIBS=./Lib/linux64/
    HEADERS=./Include/
    SRC=*.cpp
    LINKS=-lPhysX3CharacterKinematic_x64 -lPhysX3Common_x64 -lPhysX3Cooking_x64 -lPhysX3Extensions -lPhysX3Vehicle -lPhysX3_x64 -lPhysXProfileSDK -lPhysXVisualDebuggerSDK -lPxTask
     
    all:
    	$(COMPILER) $(OPTIONS) -I$(HEADERS) -L$(LIBS) $(SRC)
    clean:
    	rm -f *.out *.o *~
    Il me sort la même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    g++ -std=gnu++0x -I./Include/ -L./Lib/linux64/ *.cpp
    In file included from ./Include/foundation/PxSimpleTypes.h:42:0,
                     from ./Include/foundation/Px.h:39,
                     from ./Include/foundation/PxErrors.h:37,
                     from ./Include/foundation/PxErrorCallback.h:38,
                     from ./Include/extensions/PxDefaultErrorCallback.h:33,
                     from main.cpp:1:
    ./Include/foundation/PxPreprocessor.h:323:3: erreur: #error Exactly one of NDEBUG and _DEBUG needs to be defined by preprocessor
    make: *** [all] Erreur 1

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 027
    Billets dans le blog
    135
    Par défaut
    Ah, il faut définir soit l'un, soit l'autre.
    Dans le makefile, on pourra faire :
    OPTIONS=-std=gnu++0x -DNDEBUG
    Pour Visual, c'est identique, il faut définir NDEBUG, dans les defines
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Ah je ne connaissais pas !

    Merci mille fois ça fonctionne enfin !

    P-S : j'ajoute juste qu'il faut compiler avec -lpthread sur linux

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

Discussions similaires

  1. Réponses: 53
    Dernier message: 03/08/2007, 15h50
  2. Impossible de créer une fonction MySql 4
    Par tynmar dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 26/03/2007, 11h12
  3. [lomboz 3.2]impossible de créer une nouvelle action
    Par olivier57b dans le forum Struts 1
    Réponses: 1
    Dernier message: 03/03/2007, 12h34
  4. Réponses: 1
    Dernier message: 30/12/2005, 18h14
  5. Réponses: 17
    Dernier message: 03/12/2004, 15h33

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