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 :

Utiliser n'importe quel bibliotheque en C++


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Utiliser n'importe quel bibliotheque en C++
    Bonjour,

    Brievement, pourquoi une bibliotheque compilee a partir d'un langage A ne peut pas etre utilisee a partir du C++

    Dite moi si je me trompe, mais tout ce dont on a besoin pour utiliser une bibliotheque c'est d'etre compatible avec son interface cad son ABI(Application Binary Interface).

    A priori, cette interface est caracterisee par la calling convention + mangling du compilateur, ... (n'hesitez pas a completer la liste)

    En d'autre terme, je souhaiterais savoir si, si le mangling des compilateurs etait normalise (ce qui ne l'est pas a ma connaissance) ET si la calling convention etait la meme, qu'est ce qui nous empecherait de rendre toutes les lib compatibles avec n'importe quel langage ?


    J'espere que je n'ai pas ete trop confus

    PS: Pour ceux qui pensent que c'est du chinois mais que cela interessent. N'hesitez pas a faire un tour sur wikipedia:

    http://en.wikipedia.org/wiki/Name_ma...ing_in_C.2B.2B
    http://en.wikipedia.org/wiki/Applica...nary_interface


    ++ Desole d'avance si j'ai pas poste au bon endroit (et pour le titre un peu racoleur)

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par kryzantem Voir le message
    En d'autre terme, je souhaiterais savoir si, le mangling des compilateurs etait normalise (ce qui ne l'est pas a ma connaissance) ET si la calling convention etait la meme, qu'est ce qui nous empecherait de rendre toutes les lib compatibles avec n'importe quel langage ?
    Rien en principe. En pratique voir VMS par exemple qui définit au niveau de l'OS une ABI suffisamment complète pour permettre de lier ensemble des langages relativement différents.

    J'ai mis relativement, parce que définir une ABI utilisable par des langages différents, c'est pas si simple que cela. Essaie déjà simplement pour C++ et C#. Microsoft a fini par pondre l'horreur qu'est C++/CLI pour résoudre ce problème. Et ce sont deux langages proches, si tu résouds le problème mieux que Microsoft et que tu l'as trouvé simple, je te suggère d'ajouter Haskell et CL dans la liste des langages à supporter.

    Une ABI, c'est un peu plus de choses que tu ne le penses. La décoration des noms en fait partie. Mais c'est un aspect simple, et on se sert d'elle pour essayer de détecter les problèmes à l'édition de liens plutôt qu'à l'exécution -- tout comme ce n'est pas à cause du thermomètre que tu as de la fièvre, ce n'est pas à cause de la décoration de noms que tu ne peux pas lier ensemble des objets utilisant une ABI différentes. On les trouve les conventions d'appel, la manière de traiter les exceptions, la manière de retourner des objets de taille variante -- pas un problème en C++, mais bien dans d'autres langages -- de s'assurer que les objets statiques sont initialisés dans le bon ordre -- à nouveau, ce n'est pas un problème en C++ qui ne définit pas d'ordre, mais d'autres langages définissent un ordre, une ABI universelle devrait donc le prévoir -- la manière dont les objets sont organisés en mémoire, ... sans compter tous les aspects bibliothèques: comment faire fonctionner ensemble le Pascal -- où l'équivalent de feof a un effet prédictif -- et C -- où feof concerne le passé? Comment faire interragir correctement des langages à GC et des langages qui permettent de stocker un pointeur de manière encryptée?

    En pratique, les implémentations permettent un interfacage vers une espèce de plus petite ABI commune -- l'ABI du C --, documentent plus où moins bien comment traiter ce qui a besoin de choses non prévue dans celle-ci et laissent les problèmes de compatibilité de bibliothèque à la responsabilité des programmeurs.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2011, 12h53
  2. [Wamp] Utiliser Wamp avec n'importe quel port
    Par quentiin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 27/01/2010, 12h46
  3. Peux t-on utiliser Zend sur n'importe quel hebergeur ?
    Par weed dans le forum Zend Framework
    Réponses: 4
    Dernier message: 19/05/2009, 00h48
  4. Utiliser n'importe quel objet comme un tableau
    Par Lethal dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/03/2006, 11h38
  5. Réponses: 5
    Dernier message: 14/01/2004, 20h31

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