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

Biblioth�ques C++ Discussion :

librairie statique et probl�me d'initialisation


Sujet :

Biblioth�ques C++

  1. #1
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut librairie statique et probl�me d'initialisation
    Bonjour,

    Je con�ois un programme et j'ai souhait� le diviser en modules pour le g�rer plus facilement. Pour cela j'ai cr�� des librairies statiques regroupant un ensemble de classes. Ces classes utilisent des variables statiques et j'ai un probl�me avec leur initialisation.

    Dans le cas "sans les librairies statiques", les variables sont initialis�es au d�marrage du programme (avant le "main()").

    Mais dans le cas "avec", les variables sont initialis�es juste avant l'utilisation de la classe utilisant cette variable et non plus au d�but du programme.

    Comme ces variables sont initialis�es par des fonctions (en fait, enregistrement de la classe dans une 'factory'), je me retrouve bloqu�.

    Y a t'il un moyen de forcer l'initialisation des classes de la librairie? Ou bien une quelconque recommandation?

    Nota: je travaille sur Qt-Creator � la fois sur windows et sur linux. Pour ma foi, mon test sur les librairies statiques se fait sous 'windows'.

    merci d'avance

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut
    Pas tout � fait: je n'ai pas de probl�me d'ordre d'initialisation des variables (J'aurais pu en avoir un mais je l'ai r�gl� avant m�me de compiler).

    Mon programme fonctionne de cette mani�re

    -Enregistrement du premier objet dans la 'factory' (et initialisation de celle-ci au premier enregistrement: il y aurait pu y avoir un fiasco)
    -Enregistrement des autres objets
    -Puis le main et ce qui va avec...
    -Apr�s je fais un appel � la factory, il me donne les clefs correspondants aux diff�rents objets et enfin je les utilisent.

    Quand je regroupe les classes de mes objets dans une librairie, je n'ai plus mes objets d'enregistr�s.

    Par contre, si je fais un appel � ces objets, je vois qu'il d�marre la m�thode d'enregistrement pour seulement les objets appel�s.

    Le but de mon syst�me de factory est de n'ajouter que les deux fichiers de l'objet (.cpp et .h) pour obtenir un nouveau membre dans la liste de ma factory. Et donc les cit�s dans un autre fichier ne me satisfait pas

  4. #4
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut
    Bon, je vais essayer de faire une biblioth�que dynamique pour voir...

  5. #5
    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 : 51
    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
    Je pense que le probl�me est un peu diff�rent. Si tu as dans ta biblioth�que une variable statique, mais que le linker d�tecte que tu ne l'utilises pas dans le programme principal, il va supprimer cette variable au moment de la phase de link.

    Le probl�me, c'est que "utiliser" pour le linker, �a veut dire "le programme principal a une r�f�rence dessus", et non pas "lors de l'initialisation de cette variable, un side effect va modifier l'�tat du programme principal".

    Certains linkers ont des options pour forcer la g�n�ration du code correspondant � une variable, m�me si elles sont consid�r�es comme inutiles. Par contre �a rend ton code sp�cifique � une plate-forme, et parfois, ces options doivent �tre sp�cifi�es sur la ligne de commande et non dans le code source.

    Je n'ai pas vraiment de bonnes solutions � proposer. Et quand j'ai tent� de discuter de ce probl�me avec des fabricants de compilateurs, j'ai eu des r�ponses du style "bin, c'est normal !" et "on a toujours fait ainsi".
    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.

  6. #6
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut
    Merci pour ses informations. c'est peu �tre en effet au niveau du link: je n'ai pas fait assez de tests pour voir si �a vient de l�.

    Sinon, j'ai commenc� � modifier mes codes pour obtenir des librairies dynamique. Dans ce cas, si je ne fais pas d'appel � mes classes, je n'ai aucun objet enregistr�. Par contre, si je fais appel � une seule classes, TOUT les objets s'enregistrent.

    Le seul petit probl�me que j'ai concerne les autres biblioth�ques: je n'ai transform� que celle des objets pour la factory (et la factory se trouve dans une biblioth�que statique). Ce qui, je pense fais en sorte que j'ai deux factory de cr��s: celle du main et celle de la lib dynamique. Et mes objets s'enregistrent bien sur dans la lib dynamique.

    Je ne sais pas si les informations de la factory seront partag� entre le main et les objets si je rend la lib de ma factory dynamique . Testons cela...

  7. #7
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut
    Mes objets s'enregistrent mais il toujours sur la factory inaccessible. Je vais maintenant regrouper ma factory avec mes objets dans une m�me lib. Ce sera un arrangement provisoire.

  8. #8
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2006
    Messages
    41
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Par d�faut
    �a fonctionne... je consid�re ce topic comme r�solu.

    Note: j'ai oubli� de d�commenter une ligne dans mon programme, donc peut �tre que le test pr�c�dent (avoir deux lib dynamique) fonctionnait. Je n'ai pas la motivation n�cessaire pour v�rifier.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me avec une librairie statique
    Par flo_k dans le forum C
    R�ponses: 2
    Dernier message: 21/09/2009, 21h50
  2. Probl�me librairie statique
    Par apesle dans le forum C++
    R�ponses: 4
    Dernier message: 30/03/2009, 23h12
  3. R�ponses: 2
    Dernier message: 17/04/2008, 18h23
  4. Probl�me de Librairie statique
    Par TNT89 dans le forum C++
    R�ponses: 8
    Dernier message: 24/12/2007, 18h18
  5. R�ponses: 5
    Dernier message: 08/03/2006, 22h37

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