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

C++ Discussion :

Templates et temps de compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Templates et temps de compilation
    Bonjour,


    J'ai créé une librairie de gestion de données basée sur des templates.
    Voici mon organisation :

    libUtils (utilitaires)
    libGesDatas (gestion de donnée, templates de partout)
    libBusiness (données métier, utilisant la lib précédente)
    Projet1 (projet utilisant les données métier pour répondre aux besoins)

    Le problème c'est que tout est lié statiquement, et en travaillant sur Projet1 juste en utilisant les données de libBusiness (donc les templates sont déjà implémentés avec chaque donnée métier), la compilation est assez longue rendant le développeur peu productif.

    Donc je me demandais si je pouvais faire de libBusiness une DLL, si ça vallait le coup ?

    Merci,

    A bientôt

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Je ne suis pas sur que cela change quelque chose. Pour améliorer le temps de compil passe plutôt par des pré-compiled header.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ok merci, je vais regarder ce que sont les pré-compiled header (en détail) pour savoir où et comment les utiliser.

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    extern template est probablement la solution que tu cherches pour n'instancier des templates qu'une seule fois.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Concernant les entêtes précompilées, dans ma libBusiness j'ai que ce genre de classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class CClient : public CData<CClient>
    {
     
    };
    J'ai un include qui inclue toutes mes données métiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include "CClient.h"
    #include "CVehicle.h"
    //etc...
    Le but de cet include est qu'il définie également une type list avec toutes les classes métiers, liste qui sera utilisée pour une hiérarchie éparpillée.

    Dans les propriétés du projet libBusiness, j'ai indiqué "Créer une entête pré-compilée" avec le fichier d'inclusion ci dessus.
    A la compilation, lorsqu'il crée la librairie, j'ai beaucoup de warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>CClient.obj : warning LNK4006: ___@@_PchSym_@00@UmvdwveUtvhwzgzhUoryhUocdyfhrmvhhUwvyftUxzeoorhgOlyq@ déjà défini dans CVehicle.obj
    Et au link du projet utilisateur (Projet1) j'ai des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2>libBusinessd.lib(CClient.obj) : error LNK2005: ___@@_PchSym_@00@UmvdwveUtvhwzgzhUoryhUocdyfhrmvhhUwvyftUxzeoorhgOlyq@ déjà défini(e) dans libBusinessd.lib(CAvlList.obj)
    J'imagine que j'utilise mal ces entêtes pré compilées.


    C'est quoi "extern template" ? Ca va faire quoi ?

    Merci pour vos réponses,


    A bientôt

  6. #6
    screetch
    Invité(e)
    Par défaut
    c'est un truc qui vient du futur. Loufoque vient de l'an 2020 pour nous expliquer ce que sera le C++ alors.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/04/2008, 18h47
  2. Temps de compilation
    Par casafa dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 10/03/2008, 01h05
  3. Calculer le temps de compilation
    Par Edisan dans le forum C
    Réponses: 7
    Dernier message: 16/12/2007, 18h45
  4. Réponses: 8
    Dernier message: 10/12/2007, 18h03
  5. [Compilateur]Temps de compilation et recompilation
    Par afrikha dans le forum Général Java
    Réponses: 12
    Dernier message: 18/11/2005, 08h03

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