MFC + librairie static maison ...

MFC + librairie static maison ... - C++ - Programmation

Marsh Posté le 30-10-2002 à 10:35:47    

J'ai besoin de développer 2 exe différents qui auront des classes communes. J'ai donc choisi de créer un .lib avec ces classes. Jusque là pas de pb.  
Mais quand dans le projet de mon exe je modifie le project setting pour rajouter mon .lib dans l'onglet "Link", je ne peut plus compiler mon projet !! Il me met des erreurs de linkage (125 !) en me disant que pleins de trucs sont déjà définis !
 
Si quelqu'un à déjà eu ce pb, comment l'a-t-il résolu ?
 
merci d'avance pour votre aide  :hello:

Reply

Marsh Posté le 30-10-2002 à 10:35:47   

Reply

Marsh Posté le 30-10-2002 à 11:19:19    

faire du C sous Windows ... chacun est malade à sa façon...
Pour ton problème: une librairie n'est pas juste un fichier compilé mais un fichier compilé et assemblé et pour cela il faut passer des paramètres spéciaux à ton compilateur et à savoir si ton compilateur les supporte ...

Reply

Marsh Posté le 30-10-2002 à 11:21:23    

C'est du C++ sous visual...

Reply

Marsh Posté le 30-10-2002 à 11:27:15    

Visual j'ai du utilisé une fois, le jour où j'avais rien à faire donc là, je ne peux pas t'aider

Reply

Marsh Posté le 30-10-2002 à 11:30:05    

Cependant, en théorie:
supposons que ta lib a pou nom bidule!
donc t'as bidule.cc (ou bidule.cpp, etc.)ET bidule.h
tu compile bidule.cc -> bidule.o
dans tes progs
#include <bidule.h>
 
et à la compilation, tu dois ajouter le bidule.o
mais comment je ne sais pas ...
(c'est tellement plus simple avec gcc ;-)

Reply

Marsh Posté le 30-10-2002 à 11:38:54    

Dans la lib il y a plein de .h et .cpp ...
 
la compil me donne un .lib et c'est tout.
 
Dans visual il suffit de mettre un lien vers ce .lib dans le project setting.
 
Mais je ne vois pas quel .h inclure ...

Reply

Marsh Posté le 31-10-2002 à 05:17:41    

tu n'aurais pas laisse les fonctions de ton projet lib dans ton projet executable par hasard??
 
Sinon un .lib c'est comme un .obj en plus gros
tu peux donc te contenter du .h qui contient les prototypes
des fonctions et les definitions de tes classes.
(ainsi que les declarations extern de tes variables globales)
 
A+
LeGreg

Reply

Marsh Posté le 31-10-2002 à 07:34:39    

Citation :

faire du C sous Windows ... chacun est malade à sa façon...


 
Evites ce genre de propos, surtout si tu n'as bossé qu'une fois le jour où t'avais rien à faire, ça a tendance à vite pourrir un post.
 

Citation :

Cependant, en théorie:  
supposons que ta lib a pou nom bidule!  
donc t'as bidule.cc (ou bidule.cpp, etc.)ET bidule.h  
tu compile bidule.cc -> bidule.o  
dans tes progs  
#include <bidule.h>  
 
et à la compilation, tu dois ajouter le bidule.o  
mais comment je ne sais pas ...  
(c'est tellement plus simple avec gcc ;-)


 
Là tu parles d'un fichier objet. VC++ gère ça très bien à ta place et se débrouille tout seul. (Plus simple que cliquer sur un bouton "compiler" je vois pas ... ah si peux être : apprendre une chiée de paramètres dans un man et se créer un makefile)
 
filou66> s'il te dit que des objets sont déjà définis ... c'est que tu définis au moins 2 fois un même objet.
Tu as bien viré le .cpp de ta lib de ton projet ? Et ton .h ne contient que des _déclarations_ et pas de _définition_ ?


Message édité par HelloWorld le 31-10-2002 à 07:35:46

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 03-11-2002 à 16:27:59    

HelloWorld a écrit a écrit :

Citation :

faire du C sous Windows ... chacun est malade à sa façon...


 
Evites ce genre de propos, surtout si tu n'as bossé qu'une fois le jour où t'avais rien à faire, ça a tendance à vite pourrir un post.
 

Citation :

Cependant, en théorie:  
supposons que ta lib a pou nom bidule!  
donc t'as bidule.cc (ou bidule.cpp, etc.)ET bidule.h  
tu compile bidule.cc -> bidule.o  
dans tes progs  
#include <bidule.h>  
 
et à la compilation, tu dois ajouter le bidule.o  
mais comment je ne sais pas ...  
(c'est tellement plus simple avec gcc ;-)


 
Là tu parles d'un fichier objet. VC++ gère ça très bien à ta place et se débrouille tout seul. (Plus simple que cliquer sur un bouton "compiler" je vois pas ... ah si peux être : apprendre une chiée de paramètres dans un man et se créer un makefile)
 
filou66> s'il te dit que des objets sont déjà définis ... c'est que tu définis au moins 2 fois un même objet.
Tu as bien viré le .cpp de ta lib de ton projet ? Et ton .h ne contient que des _déclarations_ et pas de _définition_ ?




 
ben oui...
J'ai l'impression que le problème vien de mes includes ...
Dans le projet j'inclus les afxwin.h, afxext.h, etc ... et dans la lib, j'inclus afx.h ... (le projet utilise les MFC mais pas la lib). Il y a peut-être des recoupement entre afx.h et les afx*.h ...  :??:  

Reply

Marsh Posté le 03-11-2002 à 17:16:07    

heuh, dans ta lib, tu as bien coché 'use MFC' ? idem dans tes exe ?

Reply

Marsh Posté le 03-11-2002 à 17:16:07   

Reply

Marsh Posté le 04-11-2002 à 09:59:30    

oui c'est coché ;)

Reply

Marsh Posté le 04-11-2002 à 12:20:16    

tu recompiles pas tes classes communes dans tes deux projets quand meme :??:


---------------
"OCPLB : On Casse Pas Le Binôme, 'moiselle Jade, Carlson & Peters, page 823 !"
Reply

Marsh Posté le 04-11-2002 à 13:33:30    

bien sûr que non  :sarcastic:

Reply

Marsh Posté le 04-11-2002 à 19:41:02    

c'est quoi le nom des trucs deja definis?
 
LeGreg

Reply

Marsh Posté le 05-11-2002 à 00:03:01    

Montre un peu le contenu de tes headers.
 
Je parie ma chemise (j'en mets pas :) ) qu'il contiennent des objets générant du code.
 
Plus simple: inclus-les deux fois dans ton projet "classe".
Si les mêmes erreurs surviennent...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed