Partager via


Modifications apportées aux bibliothèques Visual C++ 2005

Mise à jour : novembre 2007

Les sections suivantes traitent des mises à jour et des nouveautés apportées aux bibliothèques fournies avec Visual C++.

Dans cette section

Modifications générales des bibliothèques

Nouveautés

En mode mixte, les constructeurs natifs sont appelés avant les constructeurs managés. Pour un fichier exécutable seul, les constructeurs de tous les objets globaux natifs seront appelés avant le constructeur de n'importe quel objet global managé, que les objets natifs et managés existent ou non dans la même unité de compilation.

Par conséquent, les applications qui reposent sur l'appel aux constructeurs managés avant les constructeurs natifs risquent de ne pas fonctionner correctement.

S'il y a des dépendances entre des objets globaux, vous devez garantir qu'il n'existe que des dépendances d'objets managés vis-à-vis d'objets natifs. La meilleure manière de vérifier qu'un objet est managé ou natif est de le placer dans une unité de compilation construite de cette façon.

Modifications des bibliothèques pour prendre en charge la génération d'assembly basée sur un manifeste

Tout comme Visual C++ 2005, la bibliothèque C++ standard et les bibliothèques ATL, MFC et CRT sont des assemblys partagés côte à côte avec des manifestes. De même, les paramètres du compilateur et de l'éditeur de liens pointent dorénavant par défaut vers la génération de manifeste à l'aide de mt.exe. Cela garantit que tous les fichiers exécutables Visual C++ possèdent un manifeste qui fait référence à leur dépendance vis-à-vis d'ATL, MFC et CRT. Pour des informations plus détaillées, consultez Visual C++ Libraries as Shared Side-by-Side Assemblies, Déploiement (C++) et Génération d'applications isolées C/C++ et d'assemblys côte à côte.

Si vous utilisez des makefiles pour générer vos projets, consultez Comment : incorporer un manifeste à une application C/C++.

Prise en charge de bibliothèque pour les assemblys mixtes

Visual C++ 2005 prend en charge l'utilisation de la bibliothèque C++ standard et des bibliothèques ATL, MFC et CRT en tant qu'assemblys mixtes compilés avec /clr. Ces bibliothèques mixtes permettent d'utiliser toutes leurs fonctions existantes quand votre code contient un mélange de code natif et de code __clrcall basé sur MSIL. Pour plus d'informations, consultez Assemblys mixtes (natif et managé).

Initialisation d'assemblys mixtes

Les modifications de la prise en charge des bibliothèques dans Visual C++ 2005 corrigent les problèmes de « verrouillage du chargeur » qui se posaient dans le cas de DLL mixtes dans Visual C++ .NET et Visual C++ .NET 2003. Toutefois, une dernière restriction impose encore que votre code DllMain n'accède jamais au CLR. Pour plus d'informations, consultez Assemblys mixtes (natif et managé).

Bibliothèques non prises en charge par la compilation en mode pur

Dans Visual C++ 2005, les bibliothèques ATL et MFC ne sont pas prises en charge par la compilation en mode pur (/clr:pure).

Voir aussi

Concepts

Modifications apportées à Visual C++ 2005 et aux éditions antérieures