11 votes

Conversion d'un projet VC++6/Win32 en projet VS2010 C++/Win32 : Problèmes connus

Connaissez-vous des ressources qui mettent en évidence les problèmes connus ou possibles lors de la conversion d'un système de gestion de l'eau ? VC++6/Win32 projet pour VS2010 C++/Win32 type de projet ? Je suis intéressé par toutes sortes de questions :

  • Compatibilité des options du compilateur
  • Problèmes liés à la compilation
  • Problèmes de temps de liaison
  • Problèmes d'exécution
  • Problèmes de MFC

Sinon, si vous avez déjà effectué ce type de migration, quels problèmes avez-vous rencontrés ?

Merci.

6voto

void Points 31

VC++6 a une gestion des exceptions non standard. Nous avons rencontré quelques problèmes parce que notre code contient ceci :

try { 
  //Some code
} 
catch (...) {
  //Handle error
}

Certains développeurs s'étaient fiés à ce comportement défectueux et notre application s'est plantée après avoir été compilée dans VS2008.

Ce site article explique bien le problème et comment le résoudre.

4voto

rubenvb Points 27271
  1. Tout d'abord, ces questions dépendent fortement de la qualité du code et de la manière dont l'ancien code a été adapté aux "fonctionnalités" du compilateur VC++6.

  2. Il n'est pas possible de convertir .dsp au format VS 2010 directement ( au moins avec les éditions express ), vous devrez passer par 2008 pour pouvoir vous convertir.

  3. Les assistants de conversion devraient vous avertir et vous informer de tout problème éventuel. Je ne suis pas passé par ce processus, mais je pense que les commutations du compilateur sont le dernier de vos soucis. En général, je m'attends à ce qu'un mauvais code produise beaucoup plus d'erreurs dont vous devez vous préoccuper.

En ce qui concerne vos questions spécifiques :

  • Voir 3.
  • VS2010 prendra plus de temps.
  • Le linker de VS2010 prendra plus de temps, surtout si vous activez l'optimisation du temps de liaison (introduite dans VS 2005).
  • seulement si vous avez fait des hypothèses non standard ou si VC++6 a des fonctions non standard. Tant que vous recompilez le projet complet avec VS2010 (et donc que vous le liez au dernier runtime VC(++)), aucun problème d'exécution ne devrait survenir.

sidenote : Je ne dis pas que l'ancien code est mauvais, juste que beaucoup de questions sur SO concernant VC++6 sont causées par une mauvaise qualité/conformité du code.

4voto

Jay Kramer Points 174

Heh, vs6 vous permettait d'utiliser des variables de boucle en dehors de la portée de la boucle. ie :

for ( int i=0; i<10; i++ )
{
   if( i == 5 )
     break;
}

int iVal = i;

Cela échouera dans tout ce qui est > vs6 :) échoue en 2005 et 2010 - bien qu'il y ait un paramètre du compilateur qui vous permettra de forcer ce comportement à nouveau (je suggérerais juste de le corriger, ne le forcez pas, il est non conforme de toute façon), au moins dans vs2005. Je n'ai pas encore fait le plongeon vers 2010, car je fais beaucoup de développement embarqué, et il semble que le changement de compilateur pour les choses embarquées est généralement une douleur majeure. Donc, je ne peux pas trop en dire pour 2010, mais je sais que ça passe !

3voto

Uri Cohen Points 1417

J'ai fait le déménagement, deux problèmes douloureux dont je suis conscient :
- Le traitement par défaut des exceptions a été modifié entre la VC6 et les versions ultérieures. Je crois /Eh était la valeur par défaut et cela a changé.
- Le runtime VC6 (msvcrt DLL) est inclus dans tous les systèmes d'exploitation Windows depuis Win2k, tandis que pour toute autre version, vous devez l'installer avec votre logiciel pour presque tous les systèmes d'exploitation.

2voto

Puppy Points 90818

Vous aurez beaucoup de problèmes parce que la VC6 était notoirement non-conforme, et votre code (surtout si vous avez utilisé des templates) sera probablement plein de bidouillages pour le faire fonctionner qui ne sont plus nécessaires, car MS a fait beaucoup de travail de conformité pour les versions plus récentes du compilateur, et le compilateur VC10 va probablement vomir dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X