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

MFC Discussion :

Passage VC6 -> VS2005. Explosion dans la STL


Sujet :

MFC

  1. #1
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut Passage VC6 -> VS2005. Explosion dans la STL
    Bonjour a tous,

    je poste ici, bien qu'il concerne �galement la STL, car il fallait bien le mettre quelque part et que le pb me semble plus li� � VS 2005 qu' � la STL (mais je peux me tromper ...)

    Apres cette petite intro, venons en au fait.

    Je porte une appli de VC6 sous VS2005 en non manag�.

    1er Pb
    Cette appli utilise des lib (de la boite) dans laquelle on utilise std::vector<bool>. Sous VC6, pas de souci, ca passait mais sous VS2005, ca ne compile pas. Voici la complainte du compilo
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >C:\Program Files\Microsoft Visual Studio 8\VC\include\vector(1468) : error C2039: '_My_actual_offset'*: n'est pas membre de 'std::_Vb_reference<_MycontTy>'
    2>        with
    2>        [
    2>            _MycontTy=std::vector<bool,std::allocator<bool>>
    2>        ]
    2>        C:\Program Files\Microsoft Visual Studio 8\VC\include\vector(1457)*: lors de la compilation de la fonction membre '<Inconnu>' de la classe <Inconnu>
    2>        D:\Noyau\Koelis\VS-2005 - IR 0.5\iconicregistration\Array/DynamicArray.h(369)*: voir la référence à l'instanciation de la classe modèle 'std::_Vb_reference<_MycontTy>' en cours de compilation
    2>        with
    2>        [
    2>            _MycontTy=std::vector<bool,std::allocator<bool>>
    2>        ]
    J'ai trouv� une solution qui consiste a remplacer std::vector<bool> par std::vector<unsigned char> mais ca ne me satisfait pas : ca me parait etre plus de la bidouille !

    Y a-t-il une solution propre pour r�gler ce pb ?

    2�me Pb
    Pour une raison que j'ignore, lorsque que j'ins�re des donn�es dans une map vide avec insert, l'appli crashe. J'ai pu contourner une fois le pb mais pas dans les autres cas

    donc 2 questions sur ce 2�me pb:
    1) pq ca fait ca ?
    2) comment corriger ?


    Enfin derniere question sur ce post: est-ce que le fait d'avoir une STL-VC6 et une STL-VS2005 install� sur le meme poste (j'ai encore les 2 IDE) peut etre � l'origine de ces pbs ?

    Toute aide est la bienvenue, merci

    V

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    j'ai utilis� un vector < bool > sans aucun probl�me sous vc 2008.
    fait voir ta d�claration ou la ligne d�sign�e par l'erreur.
    si cela explose dans ta map il faudrait voir la d�finition de la donn�e associ�e a ta map.
    en gros voir ton code de declaration et les classes s'y rapportant.
    voir par si ton constructeur de copie est correcte.
    pour le 3 point les stl sont independantes et associ�es a chaque compilateur.
    j'ai sur une m�me machine vc6.0 et VC2008 cela fonctionne sans probl�mes.

  3. #3
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut
    Citation Envoy� par farscape Voir le message
    salut,
    j'ai utilis� un vector < bool > sans aucun probl�me sous vc 2008.
    fait voir ta d�claration ou la ligne d�sign�e par l'erreur.
    en fait, on a creer une classe template CDynamicArray qui s'appuie sur std::vector. Et logiquement, on a sp�cialis� CDynamicArray<bool> comme std::vector<bool>

    A la compil, j'obtiens ce message _My_actual_offset is not a member of vector<bool> when compiling .......CDynamicArray<bool>

    D'apres un d�veloppeur de chez nous, on aurait mixer debug et release mais j'ai beau regarder tous les projects, je ne vois aucune diff�rence

    Citation Envoy� par farscape Voir le message
    si cela explose dans ta map il faudrait voir la d�finition de la donn�e associ�e a ta map.
    en gros voir ton code de declaration et les classes s'y rapportant.
    voir par si ton constructeur de copie est correcte.
    le 1er cas que j'ai pu corriger etait une
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    map<unsigned int, IRenderingStrategy *>
    . l'insert sur une map vide crashait l'appli. J'ai remplac� la map par un vector et c'est ok !

    Dans le 2eme cas, c'est plus complexe. C'est une map
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     map<CString, CSmartPtr<CRegistrationObject>>
    . Le constructeur par copie de CSmartPtr et CRegistyrationObject a �t� test� en test unitaire et c'est ok. Ce qui est bizarre c'est que
    1) ca passe sans pb sous VC6 en debug et en release sans assertion en debug
    2) ca passe sans pb en VC8 (VS2005) en debug (pas d'assertion ni d'exception lev�e) mais ca crashe en release

    Citation Envoy� par farscape Voir le message
    pour le 3 point les stl sont independantes et associ�es a chaque compilateur.
    j'ai sur une m�me machine vc6.0 et VC2008 cela fonctionne sans probl�mes.
    ok merci.

  4. #4
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut
    eh bien .... apres quelques comparaisons de fichiers vcproj, j'ai enfin resolu le pb

    Dans un projet o� on n'avait pas ces pbs, le preprocesseur etait configur� avec
    _HAS_ITERATOR_DEBUGGING=0 et _SECURE_SCL=0

    Pour une raison obscure, _HAS_ITERATOR_DEBUGGING=0 supprime les erreurs de compil en release alors que ca ne devrait avoir d'effet qu'en release (d'apres MSDN)

    Pour le crash a l'exec, ca vient de _SECURE_SCL qui est par defaut a 1. Avec _SECURE_SCL=1, si'il y a une utilisation d'iterateur unsafe (??) ca genere une erreur runtime, sauf si _SECURE_SCL_THROWS est = 1. Dans ce dernier cas, ca leve une exception ...

    Apparemment, faire un acces a un iterateur d'une map vide est consid�r�e comme unsafe (ce qui me parait logique en fait ..)

    voilou, c'est resolu

    V

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Eh bien normalement, un it�rateur de map vide est safe pour une seule chose: Le comparer � l'it�rateur retourn� par end().

    C'est s�r, si tu cherches � la d�r�f�rencer, tu auras des probl�mes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut
    ah bas voila, j'ai la reponse ...

    mais dites, au risque de passer pour un ignare ..., o� trouvez-vous tuotes ces infos ?? Vous avez la norme en livre de chevet ?

    V

  7. #7
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par vdaanen Voir le message
    Vous avez la norme en livre de chevet ?
    Oui pourquoi ? Pas toi ?
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut
    Citation Envoy� par ram-0000 Voir le message
    Pas toi ?
    Si je savais o� la trouver, peut etre .......

  9. #9
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    Citation Envoy� par vdaanen Voir le message
    Si je savais o� la trouver, peut etre .......
    le livre de Bjarne Soustrup est un bon candidat ....

  10. #10
    Membre �clair�
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : System Integration Project Manager
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Par d�faut
    Citation Envoy� par farscape Voir le message
    le livre de Bjarne Soustrup est un bon candidat ....
    ah ben celui la je l'ai ... sur mon bureau

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 21/12/2009, 09h01
  2. Passage de param�tre � une fonction dans un G_CALLBACK
    Par Dimitri_87 dans le forum GTK+ avec C & C++
    R�ponses: 5
    Dernier message: 15/09/2006, 11h04
  3. une m�thode clean blancks dans la stl
    Par Jahjouh dans le forum SL & STL
    R�ponses: 9
    Dernier message: 16/03/2006, 21h35
  4. passage d'une variable javascript dans du html
    Par the_ugly dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 01/02/2006, 16h08
  5. [VC6 et MFC] Exception dans MFC42D.dll
    Par Philippe320 dans le forum MFC
    R�ponses: 8
    Dernier message: 09/12/2005, 14h14

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