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 :

Singleton sur plusieurs DLL


Sujet :

C++

Vue hybride

10_GOTO_10 Singleton sur plusieurs DLL 25/04/2006, 16h29
Matthieu Brucher Le singleton doit être... 25/04/2006, 16h39
10_GOTO_10 Le singleton ne doit être... 25/04/2006, 20h16
Matthieu Brucher Non, normalement le singleton... 25/04/2006, 20h30
10_GOTO_10 Si je déclare le singleton... 26/04/2006, 10h49
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut Singleton sur plusieurs DLL
    J'ai quelques données que je veux unique dans mon programme. Bon, pas de problème, je fais un singleton. Ca marche très bien... dans l'application principale.
    Parce que les DLL rattachées au programme ont leur propre segment de données. Donc une autre instance de mon singleton. J'ai donc un singleton multiple (vous me suivez ?). Pas top.
    Y a-t-il une façon de faire pour contourner ce problème ?

  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
    Le singleton doit être présent, compilé, que dans une seule unité de compilation. Pour ce cas-ci, le mettre dans un DLL est peut-être la solution.

  3. #3
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Le singleton ne doit être présent que dans une seule unité de compilation, on est d'accord. Par contre, la classe englobante (celle contenant la classe statique) peut être instanciée n'importe où dans l'appli (c'est à dire dans l'appli principale ou bien dans une des dll). Qui dit instanciation dit inclusion du .h, donc fatalement déclaration implicite d'une autre instance du singleton.

  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
    Non, normalement le singleton n'est pas dans un fichier d'en-tête, il est déclaré static à un seul endroit, dans un fichier .cpp

  5. #5
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Si je déclare le singleton dans le cpp (de la dll, par exemple), ça me fait un "Unresolved external" quand je compile l'application principale. Et réciproquement si je le met dans le cpp de l'appli.

  6. #6
    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
    Ca veut dire que tu ne l'exportes pas alors que tu devrais.
    Si tu as 2 fois le fichier compilé dans ton projet, c'est normal que tu aies des multiples singletons. Il faut que ce singleton soit visible par tout le monde.

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

Discussions similaires

  1. deploiment de code sur plusieurs machines et problème avec une dll
    Par eric1708 dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 17/12/2013, 08h55
  2. Faire une DLL répartie sur plusieurs fichiers
    Par guda dans le forum VB.NET
    Réponses: 3
    Dernier message: 06/08/2013, 10h12
  3. Réponses: 2
    Dernier message: 24/04/2012, 13h47
  4. plusieurs questions sur les Dll
    Par mnaulet dans le forum Windows
    Réponses: 4
    Dernier message: 07/08/2006, 08h39
  5. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55

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