Visual C++ - Compilation d'une bibliothèque

Fermé
Utilisateur anonyme - 20 mars 2008 à 08:48
 Sandburg - 17 sept. 2008 à 17:40
Bonjour,

Cela fait bien au moins un an que je n'ai pas posté sur ce forum. Heureusement, mon compte n'a pas été éjecté (J'ai quand même dû consulter quelque fois des articles ce qui explique cela.)

Je dispose d'un ensemble de fichiers sources (.h et .cpp) localisés dans un même répertoire. Ils définissent des objets C++ dans un "namespace" précis. Le but est d'intégrer cette bibliothèque à mon projet Visual C++ 2003, qui l'utilise.

Jusqu'à maintenant dans mon projet, j'ajoute les nouveaux fichiers sources au projet pour qu'il les prenne en compte. Et en utilisant la commande de génération, souvent (notamment quand un .h a changé) Visual Studio décide de tout compiler, même si pour certains fichiers ce n'est pas nécessaire !

Comment je pourrais faire pour compiler une seule fois cette bibliothèque, et ne plus jamais avoir besoin de le faire ? Et l'intégrer dans mon projet.

En vous remerciant d'avance si vous trouvez au moins des pistes pour atteindre mon objectif et que vous pouvez m'en faire part.

Samuel.
A voir également:

8 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
21 mars 2008 à 20:52
Bonjour,

Il y a deux attaques possibles.

1) Ta librairie (statique ou non) est un projet que tu souhaites pouvoir débugguer et dans ce cas il suffit d'ajouter le projet à la solution et de l'ajouter dans les "Referencies" de l'autre projet. Ainsi, les .lib et .dll sont automatiquement trouvés dans les répertoires de sortie et les projets compilés dans le bon ordre.

2) Soit c'est un projet fini et tu peux l'ajouter comme n'importe quelle librairie dans les propriétés de ton projet, paramètres du linker -> input -> additional dependencies.

Accessoirement, pour ne pas recompiler l'ensemble d'un projet, il suffit de sélectionner l'option pour construire le "program database" puis d'activer le "minimal rebuild". Par contre ce n'est vraiment utile qu'en debug.

M.
2
Utilisateur anonyme
22 mars 2008 à 13:08
Bonjour Monsieur,

Pour te répondre point par point :

1) J'ai créé un projet Visual de librairie (MFC et non ATL tout comme le projet principal auquel doit venir se greffer la bibliothèque). Seulement impossible d'ajouter le binaire généré dans les références du projet principal ! C'est ce que j'ai essayé en premier mais lorsque j'indiquais le lien vers le fichier, et que je voulais valider avec Ok, un dialogue d'erreur m'indiquant que l'ajout était impossible au projet apparaissait.

2) Je me suis résolu à indiquer le chemin dans un paramètre du projet où apparaît déjà trois références vers des fichiers ".lib". Après avoir essayé d'ajouter dans cette liste le premier dll que j'avais créé, l'édition de lien l'a refusé. Après avoir généré la librairie statique ".lib" il semble l'avoir accepté mais à l'édition de lien les appels vers les objets de la bibliothèque étaient non résolus.
C'est pourquoi je me suis demandé quelle pouvait être la procédure adéquate pour que le contenu de la bibliothèque puisse être lu par le programme appelant.

3) Quels que soient les paramètres que je change dans le projet, je ne les retrouve pas après enregistrement, fermeture puis ré-ouverture du projet. Quelles peuvent être les raisons pour cela ? Il faut savoir que le projet se trouve sous contrôle de configuration par l'outil CMSynergy. Mais même en ayant pris soin d'attribuer les fichiers créés par Visual Studio en lecture_et_écriture, rien n'y fait.

Merci de votre aide.
Samuel.
0
Utilisateur anonyme
29 mars 2008 à 13:53
Une idée ?
0
=) c vrai que je n'ai pas été très explicite lol et je m'en excuse !!
Donc, qd j'dis que ca ne fonctionne pas, je veux dire que j'ai toujours la même erreur qui s'affiche, et donc je n'arrive pas a exécuter le programme ("ca me met chemin du fichier inexistant" un truc du genre )
Saisis-tu mon problème??
-1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
2 avril 2008 à 14:24
oui, et non.
si tu met pas l'erreur exact, je ne saurai pas si c'est une erreur de path au link, une erreur d'include ou une erreur de config de Visual.
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Question corrolaire :
Comment fait Visual C++ pour connaitre le nom des librairies qu'il doit importer ?
Dans mon cas, je voudrais le voir importer une librairie static dont je lui ai donné le chemin. Mais au lieu de cas, il me dit qu'il ne trouve pas la lib et d'apres le nom qu'il recherche, il cherche une librairie dynamique. Pourquoi ?
-1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
20 mars 2008 à 08:56
Salut.
C'est marrant de voir à quel point les utilisateurs de visual peuvent être compétant en programmation, mais vraiment ignorant de la compilation !
Il faut que tu crée une bibliothèque C. Son nom doit être libBIBLIO.a (tu remplace BIBLIO par ce que tu veux).
Pour le faire, il faut compiler mais non lier tout les fichiers sources, puis les archiver ensemble. Tu peux aussi faire une DLL. Avec Visual, je ne connait pas la procédure exacte, mais tu doit avoir un truc dans le genre nouveau projet->DLL ou ->librarie.
Ensuite, tu continue d'inclure tes .h dans ton nouveau projet, mais il faut que tu rajoutes biliothèque que tu as créer (DLL ou lib*.a) au linkage.
Bonne chance
-2
Utilisateur anonyme
21 mars 2008 à 19:50
Bonsoir,

Merci pour ta tentative de réponse. Contrairement à ce que tu dis je suis loin d'être ignorant en matière de compilation.
Ce n'est de plus pas parce que j'utilise Visual que je l'ai fait toute ma vie. On ne peut donc pas tout connaître.

Comment paramétrer la DLL pour qu'elle soit reconnue par une application d'un projet donné ? A cette question je n'ai trouvé aucune réponse nulle part et j'ai produit une DLL inutilisable.

Bonne soirée.
0
j'ai un souci ac visual C++ express 2008+
je n'arrive pas à compiler, ca m'affiche une erreur de bibliothèque, co koi g oublié #include<stdaxf>
mm si j'inclus cette biblio, ca ne fonctionn pa.
commt faire?

merci d'avance
-2
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 avril 2008 à 15:43
ça ne fonctionn pa.
qu'entends tu par là ???
Ouvre un nouveau post, car ta question n'a rien à voir.
-2