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

Discussion :

Erreur d'analyse syntaxique avec moc (std)

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Erreur d'analyse syntaxique avec moc (std)
    Bonjour !

    J'ai un petit projet qt en console. J'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    usr/bin/moc-qt4 -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I/usr/include/c++/4.6 -I/usr/include -I../../libs/BayesianFilter -I../../libs/mymath -I. agas.hpp -o moc_agas.cpp
    usr/include/c++/4.6/bits/stringfwd.:43: Parse error at "std"
    make: *** [moc_agas.cpp] Erreur 1
    Je suis allé voir le fichier en question... mais rien à comprendre. Tout fonctionnait bien et soudainement, pouf ! Je pense me souvenir que ce me soit arrivé par le passé, mais je n'ai aucune idée comment le régler. Ce que j'ai trouvé en googlant à date, c'est qu'on ne sait pas pourquoi ça commence à se produire et sa arrête pour une raison obscure. Mais là, j'aimerais vraiment noter une solution !!

    J'ai essayé de nettoyer mes projets, effacer les fichiers temporaires manuellement, rien n'y fait. Des idées ?

    voici mon fichier PRO :
    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
    TEMPLATE = app
    TARGET =
    DEPENDPATH += .
    INCLUDEPATH += .
     
    INCLUDEPATH+=/usr/include/c++/4.6
    INCLUDEPATH+=/usr/include
     
    CONFIG += stl
     
    # Commandes d'inclusion de BayesianFilter
    DEPENDPATH += . ../../libs/BayesianFilter
    INCLUDEPATH +=  ../../libs/BayesianFilter
    LIBS+=  -L../../libs/BayesianFilter -lBayesianFilter
     
    # Commandes d'inclusion de mymath
    DEPENDPATH += . ../../libs/mymath
    INCLUDEPATH +=  ../../libs/mymath
    LIBS+=  -L../../libs/mymath -lmymath
     
    # Input
    HEADERS += agas.hpp
    SOURCES += agas.cpp main.cpp

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INCLUDEPATH+=/usr/include/c++/4.6
    INCLUDEPATH+=/usr/include
     
    CONFIG += stl
    Avez-vous essayé sans ces lignes ?

    Bonne continuation,
    Amnell.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    D'abord, merci d'avoir ajusté le titre. Je trouve en effet que c'est plus parlant.

    Avez-vous essayé sans ces lignes ?
    À l'origine, QtCreator ne retrouvait pas les librairies de la STL sans les includepath explicites.

    Je commente ces lignes. Je n'ai en effet plus l'erreur. J'ai par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error while loading shared libraries: libBayesianFilter.so.1: cannot open shared object file: No such file or directory
    Or, je suis certain que cette librairie est bien compilée, le fichier libBayesianFilter.so.1 existe et est bien situé dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ../../libs/BayesianFilter
    tel qu'indiqué dans le fichier.pro. Je n'utilise pas les shadow build pour ces projets.

    En effet, à la console à partir du projet principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [user@host AGAS]$ ls -lah ../../libs/BayesianFilter | grep libBayesianFilter.so
    lrwxrwxrwx  1 user user   26 24.04.2012 14:40 libBayesianFilter.so -> libBayesianFilter.so.1.0.0*
    lrwxrwxrwx  1 user user   26 24.04.2012 14:40 libBayesianFilter.so.1 -> libBayesianFilter.so.1.0.0*
    lrwxrwxrwx  1 user user   26 24.04.2012 14:40 libBayesianFilter.so.1.0 -> libBayesianFilter.so.1.0.0*
    -rwxrwxr-x  1 user user  57K 24.04.2012 14:40 libBayesianFilter.so.1.0.0*
    D'une certaine manière, mon problème d'origine est réglé. Par contre, j'aimerais bien mieux le comprendre Pouvez-vous m'éclairer ?

    EDIT : Je confirme, dans un projet vierge, sans ces lignes, il ne trouve pas (par exemple) <iostream>. Si j'y ajoute les includepath explicitement, il trouve la librairie. Si, ensuite, je les enlève du fichier.pro, il la trouve encore.
    EDIT : Tiens, le temps que j'écrive le EDIT précédent, il ne trouvait plus <iostream>.

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Êtes-vous sûr de compiler avec la bonne version ? Je vois "usr/bin/moc-qt4" dans la compilation. En ce qui concerne la lib .so, si vous voulez une solution simple, avec un LD_LIBRARY_PATH dans les variables d'environnement, vous ne devriez pas avoir de problème. Dans le cas où vous voulez une solution plus propre, il manque quelque chose dans le .pro, je n'ai jamais su quoi (j'ai rencontré un problème similaire avec l'utilisation de Qwt).

    Bonne continuation,
    Amnell.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    Êtes-vous sûr de compiler avec la bonne version ?
    J'avoue que non. Je n'ai jamais vérifié ceci, j'ai plutôt installé Qt et QtCreator via les dépôt de ma distribution linux, écrit du code et cliqué sur le bouton en forme de marteau pour compiler .

    Par exemple, en utilisant le projet de ma question sur les membres statiques faisant problème au linkage, je n'ai pas de problème. Pour vous situer, consulter cette discussion pour les fichier pattern.hpp, mais en utilisant le fichier pro et le main suivant.

    dev_outil_debug.pro
    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
    QT       -= gui
    TEMPLATE = app
    TARGET =
     
    CONFIG += stl
     
    INCLUDEPATH+=/usr/include/c++/4.6
    INCLUDEPATH+=/usr/include
     
    # Inclusion de libcbl-shared
    INCLUDEPATH += ../../libs/libcbl-shared
    LIBS+=      -L../../libs/libcbl-shared-build-desktop -llibcbl-shared
     
    # Input
    SOURCES += \
        main.cpp
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <pattern.hpp>
     
    using namespace cbl;
     
    int main()
    {
      LonelyClass *fh;
      fh = LonelyClass::getInstance();
      fh->kill();
      return 0;
    }
    Ce projet minimal compile, se lie et fonctionne bien. J'essaie de trouver la différence fondamentale entre celui-ci et l'autre qui cause problème et... je ne comprend pas

    EDIT : J'ai refait quelques tests en incluant ma classe BayesianFilter dans un projet de test. Je rappelle que jusqu'à tout récemment, cette classe compilait et travaillait très bien à l'éxécution.
    Cette class inclu une autre, nommée Probability, situé dans une autre libraries statique "mymath", laquelle est correctement incluse dans le fichier PRO et n'a pas changé depuis belle lurette.
    Or, dans ce test avec un main épuré, la librairie BayesianFilter est bel et bien trouvée, mais c'est le fichier probability.hpp qui ne l'est plus.
    Je nettoye donc tout manuellement (j'efface les binaires, makefiles, fichier pro.user, etc).

    Compilation de mymath: terminée normalement.
    Compilation de BayesianFilter: terminée normalement.
    Compilation de dev_outil_debug (executable) :
    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
    make: entrant dans le répertoire « /home/charles/Workspace/cplusplus/projets/dev_outil_debug-build-desktop »
    rm -f main.o
    rm -f *~ core *.core
    make: quittant le répertoire « /home/charles/Workspace/cplusplus/projets/dev_outil_debug-build-desktop »
    Le processus "/usr/bin/make" s'est terminé normalement.
    Configuration inchangée, étape QMake sautée.
    Commence : "/usr/bin/make" -w
    make: entrant dans le répertoire « /home/charles/Workspace/cplusplus/projets/dev_outil_debug-build-desktop »
    g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../dev_outil_debug -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I/usr/include/c++/4.6 -I/usr/include -I../../libs/BayesianFilter -I../../libs/libcbl-shared -I. -I../dev_outil_debug -I. -o main.o ../dev_outil_debug/main.cpp
    In file included from ../dev_outil_debug/main.cpp:15:0:
    ../../libs/BayesianFilter/bayesianfilter.hpp:16:27: erreur fatale: probability.hpp : Aucun fichier ou dossier de ce type
    compilation terminée.
    make: *** [main.o] Erreur 1
    make: quittant le répertoire « /home/charles/Workspace/cplusplus/projets/dev_outil_debug-build-desktop »
    Le processus "/usr/bin/make" s'est terminé avec le code 2.
    Erreur à la compilation du projet dev_outil_debug (cible : Desktop)
    Confusion

Discussions similaires

  1. analyse syntaxique avec pyparsing : parsing non complet
    Par awalter1 dans le forum Général Python
    Réponses: 5
    Dernier message: 21/07/2012, 20h20
  2. Réponses: 2
    Dernier message: 11/04/2007, 18h25
  3. analyse lexicale et syntaxique avec java
    Par hasnaouiwafa dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 08/03/2007, 14h16
  4. Réponses: 6
    Dernier message: 07/03/2005, 13h45

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