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

Visual C++ Discussion :

Compatibilité entre modules VC6 et VC8


Sujet :

Visual C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 24
    Points
    24
    Par défaut Compatibilité entre modules VC6 et VC8
    Bonjour à tous,

    Bon alors, à la base, j'avais une application developpée sous VC6 (pas le temps de la passer sous VC8 pour le moment) et un bout de code initialement dévoloppé sous VC8 que j'ai voulu intégrer à mon appli.

    Apparemment VC6 n'est pas beaucoup plus à l'aise avec les templates que moi et du coup je me suis ramassé une platrée d'erreurs de compil.
    J'ai donc choisi de générer une dll avec mon petit projet VC8.

    En faisant bien gaffe de ne faire les allocations/libérations de mémoire du coté de ma dll, le couple (exe VC6, dll VC8) tournait plutôt bien jusqu'à ce que je passe en release : access violation dans un list::begin() de la dll

    La où ça devient drôle c'est que lorsque je lance l'appli(release) en dehors du debugger VC6, ça ne plante pas.

    Est-ce qu'il y a un problème de compatibilité VC6 vs VC8, ou est-ce que c'est le debugger qui est à la ramasse?

    D'ailleurs quelqu'un peut il me dire quelle est la difference entre le debug visual et un start + attach?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 575
    Points
    41 575
    Par défaut
    Il n'y a pas à ma connaissance de compatibilité entre les STL v6 et v8, donc tu as au moins intérêt à ne pas utiliser de types de la STL dans l'interface de ta DLL (normalement, pour une utilisation dans l'implémentation il ne devrait pas y avoir trop de problèmes).

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    Oui, je confirme.
    Du coup pour mon interface, retour aux char* pour remplacer les string et passage par une liste "maison" au lieu de celle de la STL.

    Mais là c'est bien dans la DLL (STL VC8) que ça plante.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 575
    Points
    41 575
    Par défaut
    On est en 2013, tu devrais utiliser des TCHAR et compiler en Unicode

    Pour ton erreur, as-tu des programmes en VC8 que tu utiliserais pour tester la DLL?

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    J'ai eu, je pense, un cas similaire au tien.

    J'avais codé une dll COM qui prenait en entrée des string de la stl.

    - Si l'exe était en debug et la dll en debug, pas de souci.
    - Si l'exe était en release et la dll en release, pas de souci.

    - Si l'exe était en debug et la dll en release, plantage.
    - Si l'exe était en release et la dll en debug, plantage (je n'ai pas testé ce cas de figure mais je me doute).

    En fait, les éléments de la STL ne font pas la même taille mémoire, selon que la compilation est en debug ou en release. D'où le plantage.

    Vu que tu utilises une "list" de la stl, et que tu parles de lancer l'exe à partir du debugger (et dll en release), je me dis que le problème est identique.

    Les classes de la stl ne sont pas identiques, selon que la compilation est en mode debug ou release. Donc passer une classe de la stl compilée en mode debug, ne sera pas compatible avec une classe de la stl compilée en mode release. Et vice-et-versa. Les objets ne sont pas identiques parce que la version debug ajoute des informations à la classe STL.

    Il faut juste le savoir. Donc si tu es en mode debug, laisse la dll en version debug. Et lorsque le projet est déployé, compile le tout en release (exe + dll).

    PS: par contre, c'est un coup de bol si les stl VC6/VC8 sont compatibles, comme le suggère Médinoc.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    finalement j'ai tout intégré dans VC6.

    Merci à tous

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

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. [Forms] : Gestion de Navigation entre module
    Par patmaba dans le forum Forms
    Réponses: 12
    Dernier message: 09/04/2004, 14h09
  3. compatibilité entre sql server 7 et analysis service sql2000
    Par jeremie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/03/2004, 15h08
  4. [Designer] Problème de transfert de données entre modul
    Par BILLYPATOU dans le forum Designer
    Réponses: 11
    Dernier message: 09/03/2004, 18h15
  5. compatibilite entre omondo et cvs
    Par ed_hunter dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/11/2003, 16h06

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