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 :

Compilation dll dans l'executable


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut Compilation dll dans l'executable
    Bonjour,

    Je cherche actuellement à intégrer une DLL simple dans un projet. Ce projet étant très modulaire, je viendrais à avoir de nombreuses DLL pour augmenter la vitesse de compilation. Je n'aimerais pas avoir mon exe et 20 DLL à côté.

    Je sais que d'habitude on ne veux pas faire ça... mais il faut savoir que certaines machines ne peuvent pas utiliser les DLL ( PS, XBOX, Wii...)
    Je cherche donc une astuce :p

    - Savez vous intégrer une DLL dans votre exécutable à la compilation de celui-ci?

    - Est-ce possible possible de les mettre dans un fichier compressé, pour les charger avant de les utiliser?

    - Comment dire à l'exe d'aller chercher la DLL autre part que dans son dossier courant?

    Merci

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Après quelques petites recherche, je vais changer ma façon de procéder.
    Je vais donc développer en dynamique pour les tests pour la mettre en statique pour la release.

    Je ne connais malheureusement que très peu l'utilisation des librairies.
    Je n'ai pas trouvé de tutoriel sur les librairies C++ dynamique et statique.

    Connaissez vous des liens ?

    Peut on facilement changer la configuration d'un projet dll sous visual pour la mettre en statique?

    merci


    Edit : je viens de trouver ça dans la FAQ Visual mais ça ne parle que des dynamique... un truc sur les statiques? merci

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Je suis arrivé à un moyen de faire simple.
    bibliothèques dynamiques pour les tests et bibliothèques dynamiques pour la release.

    J'ai donc réalisé une simple macro dans un fichier .h.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Used "#define LIB" to compile as static library (.lib)
    #ifdef LIB
    #define ARME_API
    #else
    //Used "#define DLL" to compile as dynamic library (.lib + .dll)
    #ifdef DLL // Compilation, change it in terms of project name
    #define DLL_API  __declspec(dllexport) 
    #else //Utilisation
    #define DLL_API  __declspec(dllimport) 
    #endif
    #endif
    Je l'inclue dans tout .h exportable. Je change le type de configuration en dynamque ou statique dans Visual Studio.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //compilera en dynamique
    #define DLL
    #include "BuildLib.h"
    //ou compilera en static
    #define LIB
    #include "BuildLib.h"
    Et voila.
    Si certaines personnes ont des critiques ou des améliorations ou solutions alternative.. je suis partant.

    Ce petit truc me permet en release de ne pas fournir les dlls à coté et en dans la phase de développement de ne pas avoir à rebuild le projet final.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    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 488
    Par défaut
    Vous n'utilisez pas les conventions standards de VS.
    Les constantes de compilations LIB et DLL sont déjà utilisés pour la distinction des C-Runtime.

    Je ne vois pas l'intérêt d'utiliser des dll tout en voulant supprimer deux de leurs principaux intérêts, le partage par plusieurs programmes, leur mise à jour sans modification/recompilation du programme client.

    Si le but est d'avoir le choix entre une LIB ou une dll, une simple constante de compilation suffit (mais n'utilisez pas celles déjà standardisées) et les contraintes pour la conception correcte d'une API d'une Dll n'ont rien à voir avec celle d'une librairie statiques.

  5. #5
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Vous n'utilisez pas les conventions standards de VS.
    Je ne les connais pas...

    Je ne vois pas l'intérêt d'utiliser des dll tout en voulant supprimer deux de leurs principaux intérêts, le partage par plusieurs programmes, leur mise à jour sans modification/recompilation du programme client.
    Je ne les supprimes pas. Je garde l'intérêt de la dll lors de mon développement. Lors du déploiement, à la compilation de la release, le programme ne doit plus avoir de dll car le support ne les acceptes tout simplement pas ( ce n'est pas pour du PC ).

    Si le but est d'avoir le choix entre une LIB ou une dll, une simple constante de compilation suffit
    Laquel s'il vous plais?

    Merci

    EDIT : Les constantes ne seraient-elles pas plutôt _LIB et DLL_EXPORTS...?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,

    C'est pour de l'embarquer que vous développé ou pour une application informatique.

    Parce que les librairies dynamiques sous unix-like(linux, bsd, mac) existent ce sont des .so les dll c'est pour windows.

    Après je ne voit pas pourquoi vous développez en dynamique pour après faire du static cela n'a rien a voir :/

    Les libs statiques sont compiler avec l'exe donc exe plus lourd les dynamiques sont pré-compilé et le bout de code est rattaché a l’exécutable pendant l’exécution.

    Après si c'est pour une API on rentre dans un système de module donc c'est mieux quand c'est chargé a chaud ou au démarrage lancement de l'exe sans avoir a le re-compilé comme l'a dit bacelar.

    Et des vestige de debug dans une release sa pu tu alourdit ton application et te prend la tête pour rien :/

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

Discussions similaires

  1. mettre un fichier.dll dans un executable
    Par pierre5897 dans le forum Code::Blocks
    Réponses: 24
    Dernier message: 03/09/2013, 14h27
  2. Réponses: 5
    Dernier message: 22/04/2011, 20h54
  3. Inclure une Dll dans l'executable de mon appli
    Par jcloupgarou dans le forum Visual C++
    Réponses: 3
    Dernier message: 16/01/2008, 11h54
  4. Inclure un DLL dans executable
    Par nico33410 dans le forum Langage
    Réponses: 9
    Dernier message: 01/09/2005, 15h17
  5. Erreur compilation DLL dans Eelphi 6
    Par jakouz dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2005, 16h38

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