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 :

Conflits avec void signals2/detail::InitializeCriticalSection(signals2/detail::critical_section*)


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut Conflits avec void signals2/detail::InitializeCriticalSection(signals2/detail::critical_section*)
    Bonjour,

    Je compile avec mingw un programme qui utilise boost.

    J'ai les warnings suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:/Program Files/boost/boost_1_45_0/boost/smart_ptr/detail/lwm_win32_cs.hpp:46:93: warning: declaration of 'void boost::detail::InitializeCriticalSection(boost::detail::critical_section*)' with C language linkage
    C:/Program Files/boost/boost_1_45_0/boost/signals2/detail/lwm_win32_cs.hpp:49:49: warning: conflicts with previous declaration 'void boost::signals2::InitializeCriticalSection(boost::signals2::critical_section*)'
    Si je comprends bien cela vient des 2 includes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <boost/signals2.hpp>
    ...
    #include <boost/archive/xml_iarchive.hpp>
    , qui par inclusions successives en viennent à déclarer la même fonction mais dans des namespaces différents et des arguments de namespaces différents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void boost::detail::InitializeCriticalSection(boost::detail::critical_section*)
    void boost::signals2::InitializeCriticalSection(boost::signals2::critical_section*)
    Pourtant il y a conflit. Comment ça se fait ?

    Est-ce que cela veut dire que le compilateur risque de se mélanger les pédales ? Et comment puis-je faire pour résoudre le warning ?

    Par ailleurs je ne comprends pas le "with C language linkage".

    Merci

    Flo.

  2. #2
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Oui j'ai oublié de dire que j'ai la même chose avec d'autres fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void boost::detail::EnterCriticalSection(boost::detail::critical_section*)
    void boost::signals2::EnterCriticalSection(boost::signals2::critical_section*)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void boost::detail::LeaveCriticalSection(boost::detail::critical_section*)
    void boost::signals2::LeaveCriticalSection(boost::signals2::critical_section*)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void boost::detail::DeleteCriticalSection(boost::detail::critical_section*)
    void boost::signals2::DeleteCriticalSection(boost::signals2::critical_section*)
    En regardant dans les headers susdits la déclaration des fonctions est la suivante

    boost\signals2\detail\lwm_win32_cs.hpp


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace boost
    {
    namespace signals2
    {
    extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(critical_section *);
    }
    }
    et

    boost\smart_ptr\detail\lwm_win32_cs.hpp


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace boost
    {
    namespace detail
    {
    extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(critical_section *);
    extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(critical_section *);
    }
    }

    Flo

  3. #3
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Naïvement, j'ai essayé d'expliciter les déclarations des fonctions problématiques (on rigole pas s'il vous plaît ... ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace boost
    {
    namespace signals2
    {
    extern "C" __declspec(dllimport) void __stdcall boost::signals::InitializeCriticalSection(boost::signals::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::signals::EnterCriticalSection(boost::signals::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::signals::LeaveCriticalSection(boost::signals::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::signals::DeleteCriticalSection(boost::signals::critical_section *);
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    namespace boost
    {
    namespace detail
    {
    extern "C" __declspec(dllimport) void __stdcall boost::detail::InitializeCriticalSection(boost::detail::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::detail::EnterCriticalSection(boost::detail::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::detail::LeaveCriticalSection(boost::detail::critical_section *);
    extern "C" __declspec(dllimport) void __stdcall boost::detail::DeleteCriticalSection(boost::detail::critical_section *);
    }
    }
    Ben ça marche toujours pas ...

    Flo.

  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
    Par défaut
    A priori c'est juste la déclaration des fonctions win32 non ? Si c'est ça, ça n'a pas de conséquence je pense.

  5. #5
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Merci pour la réponse.

    Oui je pense aussi que ça ne doit pas avoir de grosses conséquences. C'est juste que à chaque compilation d'un cpp (il y en a pas mal) dont le header inclut les fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <boost/signals2.hpp>
    #include <boost/archive/xml_iarchive.hpp>
    J'ai ce gros "pâté" (désolé pour l'image) de warnings. C'est désagréable.

    C'est curieux quand même, je trouve rien sur le net. Je ne dois quand même pas être le seul à inclure ces 2 fichiers à la fois dans du code compilé sous mingw. A noter que sous Visual Studio 2008, pour le même code, je n'ai aucun de ces warnings.

    Flo.

  6. #6
    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
    Par défaut
    Citation Envoyé par Flo. Voir le message
    C'est curieux quand même, je trouve rien sur le net. Je ne dois quand même pas être le seul à inclure ces 2 fichiers à la fois dans du code compilé sous mingw. A noter que sous Visual Studio 2008, pour le même code, je n'ai aucun de ces warnings.

    Flo.
    Mais non, tu n'es pas seul
    ici
    Boost : https://svn.boost.org/trac/boost/ticket/4217

    A priori ce serait corrigé

  7. #7
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Merci pour votre réponse.

    A priori ce n'est pas le même problème. C'est similaire mais pas identique. D'autre part le rapport de bugs traite de la version 1.43. Moi j'utilise la version 1.45.

    Ce qui me fait rager c'est que je n'ai pas le problème avec Visual Studio 2008. Juste mingw. C'est fatiguant tous ces warnings

    Flo.

Discussions similaires

  1. erreur de compilation - conflit avec Sleep
    Par timsah dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/02/2006, 17h52
  2. [POO] Conflit avec objet ayant le meme name
    Par ozzmax dans le forum Langage
    Réponses: 7
    Dernier message: 11/01/2006, 17h06
  3. [intermédiaire][TOpenDialog] conflit avec opendir
    Par thecaptain dans le forum C++Builder
    Réponses: 9
    Dernier message: 21/12/2005, 02h50
  4. [Ferme] DBLookup fiche detail (relation maitre detail)
    Par boyerf dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/02/2004, 20h12

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