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

Bibliothèques C++ Discussion :

Projet de lib et executable avec code commun


Sujet :

Bibliothèques C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut Projet de lib et executable avec code commun
    Hello,

    En cette soirée, je me creuse le neurone sur un petit soucis : rien de bien méchant mais juste histoire de me rassurer.

    J'ai un big projet, qui compile en exe et en lib. en lib pour que les classes soit dispo pour une autre lib, et en exe... pour le lancer ^^

    J'ai donc du déclarer mes classes __declspec(dllexport) pour qu'elles soient accessibles en lib, mais est ce que je dois ne pas les définir ainsi pour l'exe ? ou peu importe ? je peux avec des define ne rien définir en mode exe, mais est-ce utile ? (sécurité, rapidité, ... ?)

    Merci.

    Ange_blond

  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
    J'aurais tendance à dire de ne pas mettre '__declspec(dllexport)' dans l'exe. Après tout, il est toujours inutile d'en faire plus que le minimum requis. C'est souvent source de pb. Je n'ai pas de meilleur justification...

  3. #3
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Je suis un peu du même avis ... sans plus de justification mais par principe de ne pas mettre des trucs inutiles.
    J'ai quand meme testé l'exe avec la déclaration, ça ne pose pas de soucis...

  4. #4
    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
    Le truc que j'ai jamais essayé c'est de faire un LoadLibrairy sur un exe et voir si les fonctions que tu exportes sont accessibles. Je ne suis pas sûr que ce soit possible mais ça pourrait être problématique.

  5. #5
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Je crois qu'il faut quand meme les définir en extern "C" en plus du dllexport pour pouvoir les récuperer en getProcAdress apres un LoadLibrary.

    De toute maniere, je vais faire en sorte que ça ne soit pas défini en exe pi voilà ^^

    Merci.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 636
    Par défaut
    Salut,

    En fait, je dirais qu'il y a deux solutions majeures:

    Soit, tu recompile l'ensemble de la bibliothèque lorsque tu compile l'exécutable, et tu n'a pas besoin de lier le projet à la bibliothèque ni du declspec(XXX),

    soit, tu utilise la bibliothèque compilée pour compiler le projet.

    A ce moment, là, il faut le declspec(dllexport) pour compiler la bibliothèque, le declspec(dllimport) pour compiler le projet et lier dynamiquement le projet à la bibliothèque.

    Cela pourrait se traduire par une série d'instructions préprocesseurs proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #if defined(SHARED)  
        #if defined(BUILD_MYLIB)
            #define MYLIB declspec(dllexport)
        #else
            #defiine MYLIB declspec(dllimport)
        #endif // #defined BUILD_LIB
    #else
        #define MYLIB
    #endif  //#defined SHARED
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2011, 20h35
  2. Réponses: 4
    Dernier message: 21/11/2007, 18h21
  3. executer le code d'initialisation du projet
    Par popov2 dans le forum WinDev
    Réponses: 2
    Dernier message: 30/05/2007, 09h35
  4. Réponses: 2
    Dernier message: 07/08/2006, 18h48
  5. Communication entre projets MFC -> LIB
    Par beb30 dans le forum MFC
    Réponses: 2
    Dernier message: 27/06/2006, 18h30

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