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

Visual C++ Discussion :

Bibliothèques sous Visual Studio


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut Bibliothèques sous Visual Studio
    Bonjour,

    Je cherche à créer une bibliothèque de bibliothèques sous Visual Studio. Je m'explique:

    J'ai créé jusqu'à présent 3 projets différents, qui génèrent chacun un .lib. Par la suite dans mon programme, je suis obligé d'aller chercher ces 3 bibliothèques et de les inclure. Pour simplifier, je souhaiterais regrouper ces 3 bibliothèques (L1, L2, L3) dans une seule. J'ai donc créer un nouveau projet (M), qui inclue les 3 autres bibliothèques. Le problème est que, comme le projet créé M (et défini comme projet de démarrage) est vide (il a juste pour objectif de regrouper les 3 autres), Visual Studio me renvoie une erreur en me disant qu'il ne trouve pas le fichier M.lib. Quelle est la procédure pour créer une bibliothèque de bibliothèque ?

    Julien.

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Est-il nécessaire d'avoir 3 projets ? Sinon tu les regroupes dans un seul.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Oui effectivement, je peux simplement creer un nouveau projet qui inclue tous les .cpp et .h qui appartiennent aux 3 autres projets et générer le .lib. Je pensais qu'il y avait une autre méthode.

    Merci,

    Julien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    En fait, le problème est qu'avec cette méthode, si un des 3 projets est modifié (un nouveau fichier est ajouté), mon projet qui est censé regroupé les 3 autres ne sera pas mis à jour. Y'a t-il un moyen de "pointer" directement vers les projets, sans ajouter un par un tous les .cpp et .h ?

    Cordialement,

    Julien.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 099
    Billets dans le blog
    146
    Par défaut
    Bonjour,

    Pour regrouper les 3 projets, pourquoi ne mettez vous pas en place une solution, qui elle, contiendra les 3 projets. Si vous faites une modification et que vous recompilez la solution, alors la bibliothèque modifiée sera compilée (et seulement celle-ci).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Il est possible de merger plusieurs lib en une seule avec l'outil lib.exe en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib.exe /OUT:"malibunique.lib"  lib1.lib lib2.lib lib2.lib
    Pour automatiser ce merge, on peut par exemple faire comme ceci avec VS2010 :

    1) Rajouter à la solution un projet de type "utility" (c'est à dire qui ne s’attend pas à compiler un programme, ne cherche pas de main etc). Il faut pour cela faire add-> new project->win32 project puis cocher console application et empty project. Une fois le projet créer clic droit -> properties- general -> configuration type -> utility
    2) Faire dépendre ce projet des trois autres projets compilant les trois lib (clic droit sur le projet -> Project Dependencies). De cette manière un build du projet entrainera auparavant un build des trois autres projets
    3) Rajouter en tant que post-build event un appel à la ligne de commande montré plus haut.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Super ! Merci pour m'avoir apporté la solution. Par contre, il y a un petit problème:

    Comme mentionné ci-dessus, j'ai pu regrouper les trois bibliothèques en une seule. Ensuite, j'ai linké cette bibliothèque dans mon projet principal. Par contre, je suis obligé de compiler le projet qui regroupe les trois bibliothèques afin que le .lib soit généré pour pouvoir ensuite compiler mon projet principal qui fait référence au .lib, ce qui est dommage. Y'a t-il une solution pour remédier à ça ?

    Julien.

    En fait, l'idéal serait de pouvoir inclure un projet dans un projet. Ainsi, dans mon projet principal, je pourrais inclure mon projet regroupant les trois autres bibliothèques. Ainsi, la compilation de mon projet principal entrainerai d'abord la compilation du projet regroupant les trois bibliothèques, puis ensuite la compilation des autres sous-projets.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Ce n'est pas de l’inclusion mais le la dépendance.

    Vous pouvez spécifier dans une solution VS les dépendances entre projets de la solution et ainsi piloter l'ordre de compilation des différents projets.

    P.S.: je trouve particulièrement scabreux de fusionner des bibliothèques. Chacune doit disposer d'une sémantique propre et chacune des fichiers d'en-tête bien distincts.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Disons que l'objectif est seulement d'éviter de rajouter des dizaines de bibliothèques à chaque solution, si ces dernières peuvent être regroupées en une seule, sachant qu'elles ont tout de même un lien entre elles.

    En ce qui concerne les évènements pre-build, y'a t-il possibilité de lancer la compilation d'une solution externe, avec je ne sais pas quelque chose comme \build "xxx.sln" ?

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Citation Envoyé par Khan34 Voir le message
    En ce qui concerne les évènements pre-build, y'a t-il possibilité de lancer la compilation d'une solution externe, avec je ne sais pas quelque chose comme \build "xxx.sln" ?
    Ca doit être faisable, style :
    vcbuild /build taSolution.sln "Debug|Win32"
    A voir ce que tu peux rendre générique en remplaçant Debug et Win32 par les variables $(ConfigurationName) et $(PlatformName)

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Super ! Par contre vcbuild ne fonctionne plus apparement, il faut utiliser msbuild à la place. Merci à tous !

    Julien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] problème d'intégration d'une bibliothèque sous Visual studio 2010
    Par IsaAdA dans le forum Visual Studio
    Réponses: 5
    Dernier message: 25/08/2013, 20h18
  2. Réponses: 6
    Dernier message: 09/12/2005, 15h48

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