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 :

Mauvaise utilisation d'une librairie static


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut Mauvaise utilisation d'une librairie static
    Bonjour à tous,

    Je reprends un projet et j'ai trouvé quelque chose de dégueulasse !
    Il y a une librairie statique qui est crée (.lib). D'après l'utilisation classique d'une librairie statique, on devrait linker sur cette librairie statique ainsi que inclure son .h.
    Or dans le projet que j'ai repris, on link bien sur la librairie static (.lib) mais le .h inclus n'est pas le même que celui avec lequel la librairie en elle même a été compilée.


    Exemple de différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Vrai ".h" :                             Mauvais ".h":
    struct a                               struct a
    enum b
    struct c
    struct d                               struct d
    fonction e                            fonction e
    Certaines définitions ont été mises en commentaire (enum b et struct c de l'exemple). A la compilation de mon projet je n'ai pas d'erreur. Par contre l'application a un comportement bizarre, comme des problèmes d'alignements.
    Je vais refaire l’inclusion de la lib de manière propre car je ne pense pas qu'il soit normal de travailler comme ça.
    Je voulais juste connaitre les risques de cette absurdité, pouvez-vous m'aider ? Risque-t-on d'avoir des problèmes d’alignements avec ça ?

    Merci !
    Bonne journée

  2. #2
    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
    salut,

    si je comprends bien tu as un ".h" lite pour l'utilisation de la lib. c'est en effet pas très beau, mais ça ne doit pas générer des problèmes d'alignement.

    C'est sûrement ta lib et ton appli qui ne sont pas compilées avec le même type d'alignement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut
    Merci pour ta réponse.

    Tu as bien compris le problème.
    La lib et le projet sont compilés avec le même alignement, mais l'utilisation de certaines fonctions de la lib ont des effets sur des variables qui n'ont rien à voir. Du coup tout est foireux au final.
    Je pensais que le fait d'utiliser un ".h" lite pose problème

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    proposer un header différent ne me choque pas.
    La lib a son propre header qu'elle n'utilise qu'en interne et a choisi d'exposer un second header qui est celui sur lequel un utilisateur doit se baser pour utiliser cette lib.

    Dans tous les cas, je ne vois pas pourquoi il y aurait un problème d'alignement s'ils sont cohérents.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut
    Merci à vous deux pour vos réponses !
    Je trouvais juste bizarre qu'une même librairie puisse être utilisée avec des header différents.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Il n'y a qu'à voir le header C de FILE.
    Il y a sûrement un autre header qui définit clairement la structure FILE et ce qu'elle contient, qui est invisible à l'utilisateur qui n'utilise que FILE* et les méthodes fournies.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. Mauvaise utilisation d'une DLL ?
    Par _SamSoft_ dans le forum C
    Réponses: 6
    Dernier message: 21/02/2007, 00h14
  2. [FB] utilisation d'une librairie C/C++
    Par dug dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/10/2006, 22h05
  3. [GD] Utilisation d'une librairie equivalente à Gd/installation sans reboot du serveur
    Par hokidoki dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 21/07/2006, 15h22
  4. Utilisation d'une librairie
    Par LordBob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/07/2006, 14h06
  5. Réponses: 4
    Dernier message: 13/10/2005, 12h41

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