2010-08-21 10 views

Répondre

2

Chaque version de Visual Studio comporte une version mise à jour (et différente) de l'environnement d'exécution C et/ou C++. This msdn page (sous: "Quels problèmes existent ...") explique assez bien quel est le problème. Ce qui est décrit ici pour msvcrt.dll < -> msvcrt10.dll est valide pour chaque msvcrtXX.dll.

Il ne devrait pas présenter de problème notable, mais il est recommandé d'utiliser la version du binaire pour la version appropriée de VS.

2

Le problème habituel est que le code généré avec différentes versions de Visual Studio utilise une version différente des bibliothèques d'exécution. Selon la conception de la bibliothèque, cela peut souvent poser des problèmes car il existe plusieurs versions de fonctions d'allocation et de désallocation (par exemple) et il peut être facile d'obtenir des erreurs de tas lorsqu'un pointeur attribué dans une bibliothèque d'exécution est transmis à une fonction de désallocation d'une fonction différente. Cela peut se produire si les bibliothèques d'exécution sont liées dynamiquement ou statiquement.

Même si ce problème est évité par une bonne conception de bibliothèque, il est toujours inefficace d'avoir plusieurs tas C dans le même programme.

Il existe d'autres problèmes potentiels avec les fonctions de bibliothèque de temps d'exécution qui se fondent sur des informations telles que statiquement tenue srand et rand, lieux et fonctions héritées laides telles que strtok.

Même lorsqu'il est possible de lier plusieurs versions de Visual Studio, il est généralement plus sûr de ne pas le faire.