Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
635 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Librairies statiques, sousprojets et STL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Librairies statiques, sousprojets et STL

n°255805
obones
Posté le 28-11-2002 à 06:17:39  profilanswer
 

Salut à tous et toutes
 
J'utilise MSVC++ 98 avec VStudio 6 et je travaille sur un projet assez complexe. Ce projet inclus des sous-projets, lesquels sousprojets créent des librairies statiques.
Ces librairies contiennent des fichiers objets générées à partir de mes fichiers sources. Jusque là, rien que de très normal me direz-vous.
Le problème vient du fait que ces fichiers sources utilisent la STL pour accéder à des fichiers, donc en particulier la classe fstream
Quand je compile et crée les librairies à partir des sous projets, je n'ai aucun problème, toutes les étapes (compilation + librairie) passent bien
Mais quand je veux créer le projet principal qui utilise ces librairies, ça compile bien mais l'édition de lien plante complètement. Je reçois ce genre de message :
 
msvcprtd.lib(MSVCP60D.dll) : warning LNK4006: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Tools.lib(MathUtil.obj); second definition ignored
 
Ce qui semble clairement dire que mon fichier MathUtil.obj redéfinis la class ofstream ce qui est faux puisque ce fichier ne fait que l'utiliser. Enfin, c'est ce que je crois puisque dans mon esprit, le fait de créer une librairie, c'est juste mettre les fichiers obj bout à bout de manière à n'avoir plus qu'un seul fichier à transporter.
Malheureusement, il semble que le compilateur ajoute tout seul des librairies dans les fichiers objets. Comment faire pour lui interdire de faire ça ? J'ai bien essayé /nodefaultlib dans l'étape librairie des sous-projets mais ça ne change rien car elles sont inclues dans les fichiers objets, pas dans la librairie.
 
Comment puis-je faire donc pour résoudre ce problème ?
 
Merci d'avance pour votre aide
 
Olivier

mood
Publicité
Posté le 28-11-2002 à 06:17:39  profilanswer
 

n°255848
obones
Posté le 28-11-2002 à 09:21:52  profilanswer
 

Bon ben j'ai trouvé...
 
En fait, il faut s'assurer que tous les sous-projets utilisent bien la même version de la RTL que le projet principal. On trouve ça dans l'onglet C/C++, la catégorie Code Generation, le choix Use Runtime library. Je vous conseille la version Multithread DLL Debug pour une version Debug. Dans le cas de la version Release, utilisez Multihread DLL tout court
 
Ensuite, Il faut être sûr que les librairies qui utilisent MFC par le code ont bien les options de projet qui indiquent que MFC est utilisé (onglet Général) et là encore, il faut être sûr que cette option est bien la même que celle du projet principal, si celui-ci utilise MFC bien sûr...
 
Voila voila
En espérant que ça pourra vous aider


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Librairies statiques, sousprojets et STL

 

Sujets relatifs
Compiler avec automake autoconf avec plusieurs librairiesPb d'"allocation mémoire avec STL string
librairiesSTL et SUN sparc compiler 4.2 ?
Linker des librairies C en Java[C++ / linux] recherche des docs sur les librairies Qt
Organiser mes librairies de classesA propos des inner class, et des inner class statiques
[ PHP ] Librairies GDSTL: ifstream
Plus de sujets relatifs à : Librairies statiques, sousprojets et STL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR