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

SL & STL C++ Discussion :

export std avec les dll


Sujet :

SL & STL C++

  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut export std avec les dll
    Bonjour.
    j'ai entendu dire, du fait des divers implémentation de la std, l'exportation de class utilisant la std dans une dll est trés mauvaise.
    En gros, je génère un dll avec vc6 et je veut l'exploité avec vc8.
    Prob : ca marche pô car la stl n'est pas implémenté pareil.

    Je voulais savoir si c'était vrai, et si boost as les même problème.

    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Tous les templates ont ce probleme. Déjà, je ne suis pas sur que tu ais réellement réussi à exporter une instanciation de template... C'est possible dans une certaine mesure avec VC++, mais c'est lourd et ça ne règle pas grand chose.
    En bref: même avec le même compilo, tout pareil, si tu crées un exe + une dll, chacun aura ses propres instanciations de template. En clair, en mémoire, il y aura 2 fois le même std::string. Ca marche parce que c'est exactement les mêmes, mais c'est facile à casser. Il suffir d'activer un flag de compilation genre _SECURE_SCL pour l'un et pas pour l'autre (ce qui peut etre fait à ton insu), et boum. J'ai croisé un post à ce sujet dans la mailing list de boost.

    Quant à mixer VC++ 6 et 8, y'a encore d'autres problemes qui viennent s'ajouter : même si tu utilises la même STL, chaque compilo utilise sa propre CRT et donc chacun a son propre opérateur new/delete, et il ne fait pas mélanger leur utilisation.

    J'avais expliqué tout ça en détails il y a un certain temps il me semble, peut etre que tu peux retrouver mon post.

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    merci

    Citation Envoyé par Aurelien.Regat-Barrel
    Quant à mixer VC++ 6 et 8, y'a encore d'autres problemes qui viennent s'ajouter : même si tu utilises la même STL, chaque compilo utilise sa propre CRT et donc chacun a son propre opérateur new/delete, et il ne fait pas mélanger leur utilisation.
    C'était juste pour illustrer ma question. Un autre exemple on peut utilisé des dll de visual avec mingw et inversement.
    Les dll de la fftw est un bon exemple.

    Citation Envoyé par Aurelien.Regat-Barrel
    J'avais expliqué tout ça en détails il y a un certain temps il me semble, peut etre que tu peux retrouver mon post.
    je vais chercher merci

    Du coup les template (et donc la stl et boost) c'est super....mais pas pour des interface dll... faut y allez à l'ancienne et sans template exporté

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mongaulois
    C'était juste pour illustrer ma question. Un autre exemple on peut utilisé des dll de visual avec mingw et inversement.
    Les dll de la fftw est un bon exemple.
    cela dépend de plusieurs choses. fftw c'est du C, donc ok. Mais les 2 compilos n'ont pas la même ABI, donc pour des dlls C++, ça ne marche pas. Et puis il faut tenir compte du fait que les dlls utilisent la même CRT ou pas, etc...

    Du coup les template (et donc la stl et boost) c'est super....mais pas pour des interface dll... faut y allez à l'ancienne et sans template exporté
    Personnellement je n'utilise les dlls qu'en debug. En release, c'est des libs statiques avec optimisation globale au maximum. Si tu dois développer un système genre plugin, le C++ de base n'est pas l'idéal. Tu peux peut être développer ton API de base en C et fournir un petit wrapper C++ que chaque partie se compile en lib statique.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Merci


    Donc si j'ai bien compris, si l'on ne veut pas donner le code mais juste des dll et une interface,
    les templates sont à exclure de l'interface. Donc la std, boost ...
    Aprés du moment que se ne soit pas dans l'interface,on doit pouvoir les utiliser.

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Tu peux bien sur utiliser tout ce que tu veux de maniere interne
    Il faut juste que le .h livré avec ta dll ne contienne aucun template, y compris dans les fonctions membres privées. Si tu en as besoin, tu peux utiliser la technique du pimpl.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    technique du pimpl.
    ??
    ok merci.
    je comprend mieux le problème.
    je vais chercher ce qu'est le pimpl

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/12/2012, 16h47
  2. probleme avec les dlls
    Par warubi dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/03/2008, 10h44
  3. Visual et liens avec les DLL externes
    Par stof dans le forum Visual C++
    Réponses: 7
    Dernier message: 04/02/2008, 12h11
  4. [Apache 2.0 - PHP5.2]apache plante avec les dll de PDO
    Par developpeur_mehdi dans le forum Apache
    Réponses: 5
    Dernier message: 02/12/2006, 21h33
  5. [C#] Problème avec les dll
    Par padodanle51 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/11/2006, 18h04

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