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

MFC Discussion :

Pb reference sur une globale inutilisée (VC6)


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Pb reference sur une globale inutilisée (VC6)
    J'ai un problème que je n'arrive pas à résoudre,
    j'utilise une classe pour référencé automatiquement un module grâce à son constructeur qui appelle une une fonction de référencement.
    En simplifier sa donne à peu près ça :

    class a : public ReferencementBaseClass
    {
    unsigned int ID;
    unsigned int Info1...
    a()
    {
    ID = e_ClassA ;
    initialisation des autres champs ;
    Referenceur::Reference(this)
    }
    }


    Pour appeler le constructeur de cette classe j'utilise une global déclaré dans le même fichier .cpp.

    a variableClassA;


    Le problème est que cette global référencé à aucun autre endroit du code est tout simplement dégagé au moment du link et par conséquent le constructeur n'est pas appelé est mes données inclus dans la classe a ne sont pas référencé par ma classe Referenceur.

    Il me faudrait une méthode pour forcer le linker à conserver la référence et donc faire l'initialisation de la global en début de programme. Pour conserver la souplesse que cela apporte (il suffit d'un fichier pour référencé un nouveau type d'objet) il faudrait que la méthode puisse être écrite dans le .cpp lui même, style __decl_spec(link) ou #pragma link.

    Je n'est malheuresement pu trouver de solution viable à ma situation, quelqu'un aurait-il une solution à ce problème.

    NB : le problème vient à mon avis du compilateur de visual 6 qui devrait vérifier de lui même si le constructeur ne contient pas d'appel extérieur à la classe avant de retirer toute référence à cette variable global.

    NB2 : bien entendu l'utilité de ce référencement n'est valable que dès lors où l'on possède un nombre important et variable d'objet à référencer, il a l'avantage de ne nécessité aucun ajout d'une quelconque variable dans le module du référenceur.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    En fait, j'ai bien cerner le problème aujourd'hui. Il vient du fait que tout mon code est compilé dans une lib statique qui est ensuite linker et donc comme il n'y a aucune reférence à aucune des variables de chaque instance à référencer (c'est le but) et bin au link il ignore tous les .obj qui sont censés se référencer.

    bien evidemment un #pragma comment (lib, "toto.obj") m'aurait bien aidé mais il ne prend que les vrai .lib

    j'ai essayé un #pragma (linker, "/includevariable) , ça marche mais c'est pas fantastique car il faut retrouver le nom d'une globale du module et en C++ il ne suffit pas de rajouter __ , il faut regarder le .map c'est pas très pratique.

    En fait il me faudrait un truc pour linker une lib complète avec tous ces modules qu'ils soient appelés ou non.

    Any suggestion !!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2010, 10h05
  2. WCF - Ajout Reference sur une Class Library
    Par fix105 dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 20/03/2009, 12h20
  3. Réponses: 4
    Dernier message: 04/09/2008, 17h59
  4. Probleme de reference sur une clé primaire multiple
    Par T-nor dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/04/2008, 18h31
  5. Recherche globale sur une table
    Par webrider dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2006, 11h41

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