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

Boost C++ Discussion :

Boost : problème de compilation


Sujet :

Boost C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut Boost : problème de compilation
    Bonjour,

    Depuis aujourd'hui je n'arrive plus à compiler mon projet qui compilais encore bien voila 3 jours, voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    g++ -DDEBUG -g -DLIB -Wall `freetype-config --cflags` -o cortexEngine/3DEngine/objects/scene/ICamera.o -c cortexEngine/3DEngine/sources/scene/ICamera.cpp
    In file included from /usr/include/boost/shared_ptr.hpp:28,
                     from cortexEngine/3DEngine/sources/scene/../resources/CConstMeshes.h:7,
                     from cortexEngine/3DEngine/sources/scene/../resources/CModel.h:8,
                     from cortexEngine/3DEngine/sources/scene/COctree.h:6,
                     from cortexEngine/3DEngine/sources/scene/COctreeManager.h:6,
                     from cortexEngine/3DEngine/sources/scene/CSceneManager.h:13,
                     from cortexEngine/3DEngine/sources/scene/ICamera.cpp:6:
    /usr/include/boost/detail/shared_count.hpp: In constructor «boost::detail::shared_count::shared_count(P, D, A)»:
    /usr/include/boost/detail/shared_count.hpp:148: erreur: expected type-specifier before «static_cast»
    /usr/include/boost/detail/shared_count.hpp:148: erreur: expected `)' before «static_cast»
    /usr/include/boost/detail/shared_count.hpp:148: erreur: expected `;' before «static_cast»
    J'utilise g++ 4.2.3 sur Ubuntu et voici la ligne 148 :
    new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );

    Est-ce possible que une de mes classes génère cette erreur ? Où est-ce Boost qui est merdique ? Mon compilateur ?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est toi. Mais quant à savoir ce qui se passe réellement, avec quelques lignes de plus, on pourrait peut-être t'aider.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Je veux bien donner quelque lignes de code en plus, mais les quels ?

    Le code source de Boost ? Je suppose qu'il est bon, donc je n'en vois pas l'intérêt... :
    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
    #ifndef BOOST_NO_EXCEPTIONS
     
            try
            {
                pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
                new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
            }
            catch(...)
            {
                d( p );
     
                if( pi_ != 0 )
                {
                    a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
                }
     
                throw;
            }
     
    #else
    Le code de mon projet ? Oui mais quel partie ? Les fichiers .cpp/.h cité dans l'erreur, je ne les ai pas modifiés depuis des mois !

    J'ai l'impression que ça na va pas être facile de trouver cette erreur
    Pour l'instant je ne vois que 2 explications possibles :
    - Soit le message du compilateur n'est pas du tout clair !
    - Soit une des mise à jour de Ubuntu à tout foutu en l'air

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    pi_, c'est quoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    C'est ceci :

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Je viens de tenter de compiler ceci et pas de problème de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
     
    class A
    {
    };
     
    int main()
    {
    	int *pi_;
    	new( static_cast< void* >( pi_ ) ) A();
    	return 0;
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    J'ai trouvé....

    Dans la classe CSceneManager (class cité dans l'erreur), je fait:
    #include "CFrustum.h"

    Et dans CFrustum.h, je fait:
    #include "CIncConvexHull.h" (la nouvelle classe que je suis en train de créer)

    Et dans CIncConvexHull.h, je fait :
    #include "debugNew.h"

    Et ce debugNew.h contient :
    #define new new(__FILE__, __LINE__)

    Et j'ai oublié de faire un "#undef new" à la fin du fichier.

    C'est un peu par hasard que j'ai trouvé cette erreur en commentant ligne par ligne le code de ma nouvelle classe ! Pas facile à trouver ce genre d'erreur, lol

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    D'un autre côté, si on s'amuse à faire #define sur un mot clef du langage, c'est qu'on aime bien les ennuis.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    C'est un peu par hasard que j'ai trouvé cette erreur en commentant ligne par ligne le code de ma nouvelle classe ! Pas facile à trouver ce genre d'erreur, lol
    comme dit Loic, par contre, c'est facile de les éviter

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Je n'ai pas choisi de redéfinir "new" par hasard...
    J'ai voulu créer un 'détecteur' de fuite de mémoire et c'est quand même très très pratique même si certain n'aime pas.

    Voici le tuto que j'avais suivi : http://loulou.developpez.com/tutorie...artie1/#L2.2.1

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

Discussions similaires

  1. boost - problème de compilation
    Par n2engineer5 dans le forum C++
    Réponses: 3
    Dernier message: 18/05/2012, 20h11
  2. Problème de compilation de Boost
    Par SebMC12 dans le forum Boost
    Réponses: 4
    Dernier message: 23/04/2010, 14h47
  3. Problème de compilation Boost::intrusive
    Par Darktib dans le forum Boost
    Réponses: 1
    Dernier message: 03/03/2010, 14h37
  4. [boost] problème de compilation
    Par r0d dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 06/12/2006, 13h47
  5. [Boost] Problème de compilation (io_fwd.hpp)
    Par bigquick dans le forum MFC
    Réponses: 3
    Dernier message: 22/04/2005, 09h48

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