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 :

Installation d'une librairie de Fuzzy Logic


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Installation d'une librairie de Fuzzy Logic
    Bonjour,

    Je suis en train de faire un programme de simulation d'embouteillage avec Qt Creator et je voudrais utiliser la logique floue pour modéliser le comportement des conducteurs.

    J'ai trouvé 2 librairies en C++ de fuzzy logic:

    FFLL : http://ffll.sourceforge.net/index.html

    FLPL: http://french.osstrans.net/software/...zzy-logic.html

    Le projet est à rendre pour mercredi donc j'aimerais faire vite, avez vous déjà testé l'une des 2 pour savoir si elles marchent bien ?

    Dans la premiere, il y a une version bin, avec 4 fichier, un .dll, un .h, un .lib et un .exe. Je fais comment pour me servir de cette librairie avec QT ?

    j'include quoi a part le .h ?


    J'espère que vous pourrez m'aider, merci

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    A priori, tu inclus les .h et tu lie avec les .lib

    Ensuite, à l'execution, il faut probablement que les DLL soit présents.

    Je connais pas ces librairies en particulier, mais en général ça marche comme ça.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok pour le .h mais en ce qui concerne les lib je fais comment pour la lier ?

    Ensuite normalement j'ai accès à toutesles fonctions contenus dans le fichier sources ? sauf que là j'ai juste à mettre le .dll, le .h et la lib ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Les fichiers d'en-tête (les .h) fournissent les déclarations nécessaires à l'utilisation de ta bibliothèque dans ton code. Ils contiennent les déclarations des classes, des structures, des variables etc. que tu utilises dans ton propre code. Tes fichiers sources les incluent et le compilateur s'en sert pour voir que tu les utilises conformément à ce qu'a voulu l'auteur de la bibliothèque.
    -> Conclusion : ton compilateur doit connaître le répertoire où se trouve les .h. En général, si tu as un I.D.E. (Visual, Code::block, Netbeans, Eclipse ...), tu as des options permettant de préciser les répertoires de recherche d'include. Tu dois donc rajouter le répertoire où se trouvent tes en-têtes à cette option. La démarche est la même avec la compilation en ligne.

    Les .lib contiennent les informations nécessaires à l'éditeur de lien pour savoir comment traiter les appels de fonctions, l'utilisation des variables globales, de la bibliothèque.
    -> Conclusion : tu dois indiquer à l'éditeur de lien qu'il faut lier avec les .lib de la bibliothèque. Ici aussi, les I.D.E. proposent des options pour préciser les .lib et les chemins où aller les chercher. Et la démarche est toujours la même pour une compilation en ligne.

    Les .dll contiennent le code effectif de la bibliothèque est sont chargés à l'exécution en même temps que ton exécutable. Lorsque ton code fait appel à une fonction de la bibliothèque, le code est fournit par ces .dll.
    -> Conclusion : ces dll sont nécessaires à l'exécution. Cela signifie que tu dois les distribuer avec ton .exe. Il suffit par exemple de copier dans le même répertoire le .exe et les .dll.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ok merci pour cette belle explication, j'ai réussi à le faire marcher avec dev C++, en faisant un lien depuis l'IDE vers le fichier .lib.

    Maintenant, j'aimerais l'intégrer dans Qt, savez vous comment je peux le lier ma lib avec ?
    Est ce que le fait de devoir utiliser Qt fait que certaine lib ne marche pas ? (comme il y Qstring, Qvector ...)

    Et surtout, est ce qu'il est possible de faire lier la lib sans rentrer dans les options ? j'aimerais bien que mon correcteur n'est pas à faire de bidouille pour que ça marche.

  6. #6
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Pour une utilisation avec Qt, il n'y a aucun probleme.

    Les options concernant :
    - les chemins où trouver les .h (include path)
    - les chemins où trouver les .lib (library path)
    - les noms des .lib avec lesquels faire l'édition de lien
    - etc...

    il faut les mettre dans fichier ".pro" de ton projet. Comme ça, n'importe qui qui recupere tes sources (et les .h, .lib, .dll bien sûr) n'a que à taper "qmake" et "make" pour tout compiler.

    Dans l'assistan de Qt, section "QMake" toutes les options sont détaillées.

  7. #7
    Invité
    Invité(e)
    Par défaut
    j'ai mis ça dans le fichier .pro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HEADERS += widget.h \
        ...
        FFLLAPI.h \
        
    LIBS += ffllapi.lib
    Ça suffit ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bon je crois que ça marche pas, c'est chiant à faire, normalement ça devrait être tout con.

    j'ai essayé ça aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LIBS += -L/Users/Matthieu/Desktop/Collision3.0 -lffllapi
    LIBS += c:/Users/Matthieu/Desktop/Collision3.0/ffllapi.lib
     
    INCLUDEPATH = c:/Users/Matthieu/Desktop/Collision3.0/include

    Pour info, mes fichiers .dll, .h et .lib sont dans le même fichier que le reste des fonctions

  9. #9
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Ce que tu fait devrais marcher. Quels sont les messages d'erreur ?

    Sinon, contrôle 2 choses :

    1. L'option "LIBS += -Lxxxxxx" ajoute le répertoire xxxxx à la liste des répertoires dans lesquels aller chercher les .lib

    2. L'option "LIBS += -lxxxxxx" ajoute le fichier xxxxx.lib à la liste des .lib à ajouter lors de l'édition de liens. Sans l'extension .lib

    Donc, si tu as une librairie "c:/truc/bidule/fuzzy.lib" :

    Soit tu fait : (pratique si plusieurs lib dans le même répertoire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LIBS += -Lc:/truc/bidule
    LIBS += -lfuzzy
    Soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBS += -lc:/truc/bidule/fuzzy

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ça me met ça des que j'essaye d'utiliser une fonction qui se trouve dans la librairie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Matthieu\Desktop\Collision2\debug\Collision.exe s'est terminé avec le code -1073741515

  11. #11
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Ça, c'est un problème à l'exécution.

    Tu n'as aucun problème a la compilation / édition des liens ?

    Dans ce cas, il s'agit soit d'un bug dans ton code, soit d'un problème avec les DLL.

    Pour vérifier, première chose, mets un point d'arrêt à la première ligne de code de ton main() et exécute le programme en debug.

    Si ça plante de suite, c'est surement un problème avec les DLL : le programme n'arrive même pas à être chargé correctement.

    Si ça ne plante pas de suite, avance pas à pas avec ton debuggeur pour essayer de trouver ton bug.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Y'a rien a faire ... est ce que je peux vous passez les librairies avec un fichier d'exemple pour tester ?

  13. #13
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Ton problème est-il à l'exécution ou à la compilation ?

    As-tu essayé de mettre un point d'arrêt à la première instruction du main() de ton programme ?

  14. #14
    Invité
    Invité(e)
    Par défaut
    je sais pas trop, je pense que c'est à l'exécution puisque j'ai pas de message d'erreurs lors de la compilation.

    Ca se lance et ça se coupe tout de suite en retournant ce code d'erreur, après quand je mets pas la lib, ça plante à la compilation puisque ça me dit que telle ou telle fonction n'existe pas (celle de la lib). Donc ça marche à moitié.

    En ce qui concerne le debuggage, je ne sais pas, je maitrise vraiment pas ça, je sais pas ce qu'il faut voir.

  15. #15
    Invité
    Invité(e)
    Dernière modification par Invité ; 19/01/2010 à 20h25.

  16. #16
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    En ce qui concerne le debuggage, je ne sais pas, je maitrise vraiment pas ça, je sais pas ce qu'il faut voir.
    Quel environnement tu utilise ? Quel compilateur ?

    Ce que tu a a faire est très simple : placer un point d'arrêt et lancer le programme en mode "debug". C'est la base du debuggage, sans ça il est beaucoup plus compliqué de faire un programme qui marche correctement...

  17. #17
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Je viens de lire ton code, a priori, je vois pas de gros soucis, mais je ne connais pas la lib que tu utilise.

    Essaye de remplacer ton main par ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main(int argc, char* argv[])
    {
        return 0;
     
    } // end main()
    => si ça plante à l'exécution, tu as un problème avec la liaison de la librairie


    Sinon, ton code à l'air d'être compilé avec GCC.

    Est-ce que tu sais avec quoi a été compilé ta librairie ? Si c'est avec un autre compilateur (Visual Studio par exemple) je ne suis pas certains que cela puisse marcher. L'erreur vient peut-être de là.

  18. #18
    Invité
    Invité(e)
    Par défaut
    ça marche si je ne fait pas appelle à une fonction dans la lib, dès que j'utilise une fonction de la lib ça donne l'erreur que j'ai donné un peu plus haut.

    Mon programme marche dans Dev C++ quand je lie la lib.

    Dans QTcreator, ça ne marche pas

  19. #19
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Dans les 2 cas tu compiles avec GCC où tu uitilises un autre compilateur pour Dev-C++ ?

  20. #20
    Invité
    Invité(e)
    Par défaut
    ça je sais pas trop, pour devC++ j'ai laissé le truc par défaut ... g++ apparemment.

    Pour Qt creator, il fait qmake et g++ je crois

    Edit: je viens de le relancer, il me donne ça à la compilation:

    fichier pro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LIBS += -LC:/Users/Noemie/Matthieu/Fuzzy
    LIBS += -lffllapi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exécution des étapes de compilation pour le projet Fuzzy...
    Configuration non modifiée, passe l'étape QMake.
    Lancement : C:/Qt/2009.05/mingw/bin/mingw32-make.exe -w
    mingw32-make: Entering directory `C:/Users/Noemie/Matthieu/Fuzzy'
    c:\qt\2009.05\qt\bin\qmake.exe -spec ..\..\..\..\Qt\2009.05\qt\mkspecs\win32-g++ -win32 -o Makefile Fuzzy.pro
    mingw32-make: Leaving directory `C:/Users/Noemie/Matthieu/Fuzzy'
    mingw32-make: Entering directory `C:/Users/Noemie/Matthieu/Fuzzy'
    C:/Qt/2009.05/mingw/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `C:/Users/Noemie/Matthieu/Fuzzy'
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\Fuzzy.exe debug/main.o -L"c:\Qt\2009.05\qt\lib" -LC:/Users/Noemie/Matthieu/Fuzzy -lffllapi -lQtCored4
    mingw32-make[1]: Leaving directory `C:/Users/Noemie/Matthieu/Fuzzy'
    mingw32-make: Leaving directory `C:/Users/Noemie/Matthieu/Fuzzy'
    Terminé avec le code de sortie 0..
    et à l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Démarrage de C:\Users\Noemie\Matthieu\Fuzzy\debug\Fuzzy.exe...
    C:\Users\Noemie\Matthieu\Fuzzy\debug\Fuzzy.exe s'est terminé avec le code -1073741515
    Dernière modification par Invité ; 20/01/2010 à 21h20.

Discussions similaires

  1. [OCaml] Installation d'une librairie
    Par Rian83 dans le forum Caml
    Réponses: 2
    Dernier message: 17/10/2009, 08h17
  2. [debian] installer une librairie
    Par duplo dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/10/2008, 21h45
  3. installer une librairie localement
    Par norge dans le forum Déploiement/Installation
    Réponses: 2
    Dernier message: 04/06/2007, 12h38
  4. Probleme de ./configure a l'installation d'une librairie.
    Par leCcsympas dans le forum Administration système
    Réponses: 3
    Dernier message: 17/03/2007, 08h55
  5. [GD] Utilisation d'une librairie equivalente à Gd/installation sans reboot du serveur
    Par hokidoki dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 21/07/2006, 15h22

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