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

D Discussion :

Compatibilité langages C(++) / D


Sujet :

D

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Points : 62
    Points
    62
    Par défaut Compatibilité langages C(++) / D
    Bonjour,

    Je développe un jeu 3D OpenGL depuis quelques années déjà. La complexité du C++ est souvent un obstable à franchir mais je ne peux pas envisager de migrer l'ensemble du code dans un autre langage (trop de lignes).

    J'aimerais savoir s'il est possible de mélanger du langage C++ et du langage D. Si oui quelles sont les limitations : est-ce qu'on peut écrire une classe en D l'autre en C++ (fichiers objets compatibles) ou s'agirait-il plutôt d'intégrer des librairies dont j'écrirais certaines en C++ ? Voire même, le langage D inclue-t-il le formalisme du C++ comme le fait le C++ pour le C ?

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Points : 725
    Points
    725
    Par défaut
    Bonjour à toi,

    Je ne peux m'empêcher de remarquer que le ++ de titre est entre parenthèses, ça va me simplifier la tâche.

    Compatibilité avec le C :

    Depuis toujours, le D peut s'interfacer très facilement avec le C. Tu peux voir les détails sur cette page : http://www.digitalmars.com/d/2.0/interfaceToC.html
    Concrètement, il suffit de déclarer une fonction avec et de se lier avec les fichiers compilés par ton compilateur C pour que ça marche. Le tableau en bas de page te donnera une équivalence entre les types C et D pour les arguments et si jamais tu dois redéclarer une struct dans ton code D.

    Compatibilité avec le C++ :

    Avec la version 2.0 du langage, dont les features ont été gelées, mais qui est toujours en beta (sortie prévu dans l'été, avec le livre de Alexandrescu), tu as une compatibilité limitée avec C++. Les détails sont donnés ici : http://www.digitalmars.com/d/2.0/cpp_interface.html
    En gros, c'est surtout utile si tu veux t'interface à COM. Le support est limité, car les mécanismes similaires des deux langages (exceptions, templates, ...) sont en fait très différents dans leurs implémentations. D'après le concepteur de D, supporter toutes les features de C++ reviendrait à implémenter un compilateur C++ dans le compilateur D, ce qu'il veut éviter.

    Il s'agit dans les deux cas d'interface binaire entre les langages, le D étant incompatible au niveau source avec le C et le C++.

    Puisque tu semble faire du jeu vidéo, je me permets de te signaler que les interfaces vers la plupart des bibliothèques que tu es susceptible de manipuler sont disponibles dans un pack : http://www.dsource.org/projects/derelict
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je ne conseille pas de vouloir mixer les deux langages, à moins d'en faire des libraries dynamiques avec binding C...

    Et si les interfaces D sont apparemment compatibles avec les classes C++ sans héritage multiple, c'est pas top car il faudra tout compiler avec DMC++ pour avoir une chance de linker (à moins que GDC puisse le faire).
    De plus j'imagine que tu utilise des templates donc ca va être ultra-galère.

    Bref, épargne toi de la douleur car une migration t'apporterait peu, mais penses-y pour tes prochains projets. D'ailleurs je fais des jeux 3D OpenGL en D1 donc n'hésite pas à demander du code que tu n'aurais pas envie d'écrire.

    Pour la petite histoire, OpenMW utilise Ogre et a été codé en D
    http://www.ogre3d.org/forums/viewtopic.php?f=11&t=41897

    Ils ont choisis d'aller vers du full C++ pour avoir plus de contributeurs.
    Dernière modification par Invité ; 22/05/2010 à 11h40.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 78
    Points : 62
    Points
    62
    Par défaut
    Donc si je résume :
    - compatibilité avec le C pas de problème
    - compatibilité avec le C++ partiellement possible mais à éviter
    - réalisation d'une librairie dynamique intégrée dans mon projet en C/C++ pas de problème

    Et sur le lien donné je vois qu'il y a compatibilité avec mes principales librairies (SDL et dérivées et OpenGL). J'en utilise d'autres mais qui sont en C (Fmod, Agar) donc ça ne devrait pas bloquer.

    Merci beaucoup pour vos réponses, je passe le sujet à résolu.

  5. #5
    Invité
    Invité(e)
    Par défaut
    FMODEX est dans Derelict depuis peu (la branche Derelict2 qui compile sous D1 et D2).

    A mon avis Agar ca va être pénible de faire un binding, ca à l'air assez gros (1.13 mo de headers !). Mais ca à l'air intéressant la possibilité de marcher avec SDL ou tout seul.

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

Discussions similaires

  1. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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