Symptômes
Lorsque vous exécutez le compilateur Microsoft Visual C++ 2008 pour compiler des fichiers ou pour générer un projet, le message d’erreur suivant s’affiche :
Erreur irrécupérable C1859 : nom de fichier d’en-tête inattendue précompilé, réexécutez le compilateur peut résoudre ce problème.
En outre, ce problème persiste même lorsque vous exécutez le compilateur à nouveau. Ce problème se produit lorsque vous activez l’option de compilateur de Création/utilisation d’un en-tête précompilé sur un ordinateur qui exécute Windows 7 ou Windows Server 2008.
Remarque Vous pouvez rencontrer ce problème plus fréquemment si vous activez l’option du compilateur /Analyze .
Cause
Lorsque vous activez l'option de compilateur de Création/utilisation d'un en-tête pré-compilé, le compilateur requiert que les fichiers d'en-tête pré-compilés et les modules relatifs ne soient pas déplacés entre les compilations. Toutefois, la fonctionnalité de randomisation du format d’espace adresse (aussi appelée ASLR) déplace aléatoirement des modules dans un processus. Par conséquent, l'erreur se produit lorsque les modules se déplacent entre les compilations.
Résolution
Informations sur le correctif
Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.
Pour télécharger ce correctif à partir de la galerie de Code Microsoft Developer Network (MSDN), visitez le site Web de Microsoft à l’adresse suivante :
http://code.msdn.microsoft.com/KB976656
Remarque MSDN Code Gallery affiche les langues pour lesquelles ce correctif est disponible. Si vous ne voyez pas votre langue, c'est certainement dû au fait que la page de ressource Code Gallery n'existe pas dans cette langue.
Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone du Service clientèle et support technique de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l'adresse suivante :
http://support.microsoft.com/contactus/?ws=supportRemarque Vous pouvez également télécharger ce correctif sur le site Web de Microsoft à l’adresse suivante :
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=25785Remarque : Ce correctif logiciel contient également un correctif pour « C1001 : une erreur interne s’est produite dans le compilateur (compilateur fichier f:\dd\vctools\compiler\utc\src\p2\main.c, ligne 182) lorsque vous utilisez le .NET framework 3.5.
Conditions préalables
Vous devez disposer de Microsoft Visual Studio 2008 Service Pack 1 pour appliquer ce correctif.
Nécessite un redémarrage
Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué le correctif logiciel si aucune instance de Visual Studio n’est utilisé.
Informations de remplacement du correctif
Ce correctif ne remplace aucun autre correctif.
Informations sur les fichiers
La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez la
Fuseau horaire
onglet dans le
Date et heure
élément dans le panneau de configuration.
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
---|---|---|---|---|
C1.dll |
15.0.30729.4455 |
677,184 |
10-Dec-2009 |
02:31 |
C1.dll |
15.0.30729.4455 |
828,744 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,202,952 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,213,704 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,348,360 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,504,016 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,890,568 |
10-Dec-2009 |
02:31 |
Solution de contournement
Pour contourner ce problème, appliquez l’une des méthodes suivantes.
Méthode 1
Désactiver l’option du compilateur /Analyze s’il est activé.
Méthode 2
Démarrer une génération propre.
Méthode 3
Redémarrez l'ordinateur.
Méthode 4
Désactivez l’option de compilateur de Création/utilisation d’un en-tête précompilé .
Remarque Il ne sont pas garantis que ces méthodes fonctionnent. Même si vous utilisez une de ces méthodes, vous pouvez toujours rencontrer ce problème.
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations
Pour plus d’informations sur la randomisation du format d’espace d’adresse, consultez le billet de blog suivant de Microsoft :
Adresse de randomisation du format d’espace dans Windows VistaPour plus d’informations sur les erreurs d’un en-tête précompilé, consultez le billet de blog suivant de Microsoft :