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 :

Compatibilite binaire dans les bibliotheques


Sujet :

C++

  1. #1
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut Compatibilite binaire dans les bibliotheques
    Bonjour,

    Au boulot je fais toutes les semaines face a des crashs sur des gros logiciels dus au fait que certaines bibliotheques compilees avec une version differente de la runtime de Visual C++ (parfois juste un patch fix de visual suffit) crashent si jamais on utilise des objets standards tels que std::string a travers plusieurs modules ou si des objets sont crees dans une dll et ensuite detruits dans une autre. Tout ca parce que la fonction de destruction est pas la meme dans les runtimes de visual ou alors les modules ont des heap differents ou carrement la version de std::string n'est pas compatible binairement.

    Par exemple si je fais une fonction comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void f(std::string & name)
    Ca peut parfois crasher parce que f va faire des resize/push_back qui vont appeler un realloc qui est pas compatible avec le alloc que j'ai fais dans un autre module ou alors carrement parce que std::string n'est pas compatible au niveau binaire.

    Est-ce que si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::string f(void)
    Est-ce que ceci va marcher si l'allocation n'est pas compatible entre les deux modules et/ou si std::string n'est pas compatible entre les deux modules?

    En ce qui concerne le probleme de non compatibilite avec l'allocateur/destructeur, j'ai lu dans pas mal de bouquins et sur le net que shared_ptr permettait de resoudre partiellement ce probleme en garantissant que le destructeur soit celui du module dans lequel l'objet avec etait cree.

    Mais quid de la compatibilite binaire de shared_ptr lui-meme? Est-ce qu'il y a une certaine garantie entre les differentes versions de boost? Avec la version de Visual? de gcc? J'ai regarde le draft de C++0x et il n'y a rien du tout la-dessus si ce n'est que les ameliorations apportees n'impliquent pas forcement une incompatibilite binaire, rien ne garantie la compatibilite binaire avec d'anciennes versions ou avec boost.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    Bonjour,

    Je ne sais pas si sa va t'aider beaucoup mais la compatibilite entre les differentes version de BOOST est tres maigre. J' en ai fait les frais.

Discussions similaires

  1. Types de fichiers dans les bibliotheques
    Par DanParad dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 13/08/2013, 14h16
  2. Réponses: 1
    Dernier message: 10/11/2008, 10h24
  3. [JSTL] Opérateurs binaires dans les JSP
    Par gwinyam dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/07/2008, 15h59
  4. Comment tester la compatibilité du code dans les navigateurs
    Par altecad dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 14/08/2007, 16h58
  5. Le type Arbre binaire dans les bibliothèques standards ?
    Par sam69 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 10/05/2006, 13h50

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