Question

J'ai un client qui utilise encore Visual Studio 6 pour créer des systèmes de production. Ils écrivent des systèmes multithreads qui utilisent STL et s'exécutent sur des machines multi-processeurs.

Parfois, lorsqu'ils modifient les spécifications de l'un de leurs serveurs ou augmentent la charge sur l'un de leurs serveurs, ils rencontrent des difficultés à reproduire des erreurs ...

Je sais que le développement de Visual Studio 6 pose plusieurs problèmes et je voudrais les convaincre de passer à Visual Stuio 2005 ou 2008 (ils ont Visual Studio 2005 et l’utilisent pour certains projets).

Le but de cette question est de dresser une liste des problèmes connus ou des raisons de la mise à niveau, ainsi que des liens vers ceux où ces problèmes sont discutés ou rapportés. Il serait également utile d'avoir des "histoires d'horreur" réelles de la façon dont ces problèmes vous ont mordu.

Était-ce utile?

La solution

Non pris en charge sur les systèmes 64 bits, problèmes de compatibilité avec Vista et suppression de la prise en charge étendue par Microsoft le 8 avril 2008

.

http://msdn.microsoft.com/en-us/vbrun /ms788708.aspx

Autres conseils

VC6 STL non corrigé n’est pas thread-safe. Voir ici http://www.amanjit-gill.de/articles/vc6_stl.html , les correctifs ne sont pas inclus dans les Service Packs et vous les obtenir directement auprès de Dinkumware (à partir d’ici http://www.dinkumware.com/vc_fixes.html ), puis appliquez-les à chaque installation ...

Le principal problème que nous avons constaté sur mon lieu de travail est son incapacité à gérer des classes ou des fonctions modélisées, même marginales. Ce seul fait a forcé certains des fans de VS6 les plus dévoués de la société à mettre à niveau et à utiliser VS2005. En plus du problème des modèles, IntelliSense est bien meilleur, le débogage est plus facile et plus précis, et de nombreuses personnes trouvent l’IDE ??plus facile à naviguer. Le seul inconvénient que nous ayons vu jusqu’à présent est que les compilations prennent un peu plus de temps qu’en 6 (mais c’est probablement un effet secondaire de la robustesse du compilateur).

Vous pouvez également consulter ces sites pour consulter un échantillon des problèmes connus de VS6:

Je suis sûr que vous pourriez en trouver plus si vous fouillez un peu.

VS6 ne compile pas le code conformément à la norme actuelle C / C ++. Par exemple,

  • il a des règles de portée incorrectes (périmées) pour les boucles. Au moins un SDK MSFT a été mis à jour avec un code qui attend la sémantique correcte. Par conséquent, le SDK ne compilera même plus avec VS6.
  • Il est difficile de compiler toutes les constructions de modèles, sauf les plus triviales.
  • Il compilera certaines constructions de modèle qui ont été déclarées illégales dans les mises à jour de normes récentes (car les constructions ne font pas ce que les utilisateurs normaux attendent).

L'opérateur new n'est pas conforme à la spécification C ++ et ne lève pas d'exceptions en cas d'échec d'allocation, la résolution de ce problème n'est pas triviale.

voir: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

L'une des principales raisons pour lesquelles j'ai mis à niveau le compilateur C ++ conforme à la norme (bien que ce ne soit pas encore 100%), afin de pouvoir exploiter davantage de fonctionnalités C ++ dans mes projets et de ne pas m'inquiéter des hacks étranges et des solutions de contournement pouvant mener trouver des bugs.

Non compatible avec Vista. Heck, il y a une longue liste de problèmes que VS 2005 a avec Vista.

Cela étant dit, la plupart des améliorations apportées à VS semblent s’appliquer à tout ce qui est autre que le code natif C ++. Ce que je vois, c’est davantage de conformité aux normes, ce qui est important mais qui n’est guère spectaculaire.

Visual Studio 6 n'est pas compatible avec les derniers kits de développement logiciel (SDK) Windows. Par conséquent, il ne peut pas utiliser (du moins facilement) les dernières fonctionnalités du système d'exploitation.

Bien que je n’ai plus de détails concrets, je tiens à préciser que lors de la mise à niveau au travail, le nouveau compilateur a détecté un certain nombre d’erreurs que VC 6 a laissées passer silencieusement. Amélioration de la robustesse du produit juste à partir de la mise à niveau.

S'ils utilisent la STL, ils pourraient être intéressés par le pack de fonctionnalités , qui inclut une implémentation de TR1 .

J'ai mis à jour mon matériel, mais il est relativement simple. Un DLL Hell VS 2005 à mettre à niveau

La version VS 2008 de la STL est compilée avec / clr . Par conséquent, s'ils sont intéressés par la transition vers le monde géré, ils n'ont pas à perdre tout leur ancien code.

Par défaut, les nouvelles versions ont un meilleur compilateur et de meilleures bibliothèques. Cependant, il n'est pas toujours facile de porter des projets existants vers un studio plus récent et vous pouvez mettre à niveau le compilateur et les bibliothèques manuellement.

J'utilisais VS 6.0 avec le compilateur Intel il y a à peine un an. À ce moment-là, nous avions juste un tas d’anciens codes, qui menaçaient les itérateurs comme pointeurs, et vice-versa, et tout cela était vraiment désordonné et effrayant;

Mais je dois quand même mettre à niveau, car la structure que j'utilise actuellement ne fonctionne tout simplement pas sur VS 6.0. Pensez que ceci est la raison ultimative: -)

Les bibliothèques tierces ne prennent également en charge qu'un nombre limité de compilateurs. En conséquence, votre client ne pourra peut-être pas accepter les corrections de bogues ou les mises à niveau de fonctionnalités.

Par exemple, même une bibliothèque largement utilisée, telle que Boost, ne prend en charge que VS 7.1 et les versions ultérieures ( source )

Vous pouvez également rencontrer des problèmes avec la prévention de l’exécution des données (DEP), car VC6 est livré avec une ancienne version ATL. Comme d'habitude, consultez Raymond Chen pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top