Je viens de passer une solution Visual Studio (C++) sur un autre ordinateur, de configurer tous les répertoires et les paramètres aussi loin que je peux voir, et j'ai fait un nettoyer/reconstruire sur la solution. Je reçois l'erreur ci-dessus sur un tas de .obj sur la compilation, je ne sais pas quoi faire à ce sujet.La valeur _iterator_debug_level '0' ne correspond pas à la valeur '2'
Répondre
Il semble que vous mélangez des fichiers objets construits avec des paramètres différents. Essayez de procéder à une reconstruction complète et vérifiez tous les paramètres de fichier de projet pour vous assurer que la macro _ITERATOR_DEBUG_LEVEL est la même (par exemple, vous ne mélangez pas les objets construits de débogage et de publication).
La combinaison de fichiers binaires (fichiers objets) en est une raison; un autre (que j'ai rencontré) est la fausse définition de la macro _DEBUG
dans la version release. _DEBUG
n'est pas une macro standard, mais utilisée par Microsoft.
Après avoir modifié le .vcxproj -file dans Emacs I au lieu de _DEBUG
des fautes de frappe NDEBUG
pour la libération, et rencontré exactement la même erreur de construction.
bang sur ...... :) – Sandip
Dans certains cas, le mélange des options
Propriétés> Propriétés de configuration> C/C++> Génération de code> Runtime Bibliothèque
Entre inclus Bibliothèque (s) et actuellement projet de travail peut causer ce problème.
Selon l'utilisation définie comme /MD
ou /MT
ou /MDd
ou /MTd
uniformément dans tous les projets.
Merci, cela a fonctionné. – lourencoccc
J'ai découvert (curieusement) que _CRT_NON_CONFORMING_SWPRINTFS le cause. Lorsque je le supprime, je n'obtiens pas la valeur "_iterator_debug_level" 0 "ne correspond pas à la valeur" 2 "" mais l'avertissement suivant:
Erreur 6 erreur C4996: '_swprintf': swprintf a été modifié pour être conforme avec la norme ISO C, en ajoutant un paramètre de nombre de caractères supplémentaire. Pour utiliser Microsoft swprintf traditionnel, définissez _CRT_NON_CONFORMING_SWPRINTFS.
J'ai essayé de résoudre ce problème pendant cinq jours. Le code PCL (Point Cloud Library) se construit avec succès en mode débogage mais échoue en mode de publication.
J'ai reconfiguré ma bibliothèque plusieurs fois mais cela n'a pas aidé. J'ai trouvé que le problème était que la version de publication héritait de _DEBUG, donc je l'ai décoché sous les propriétés du projet >> Preprocessor >> Définitions du processeur et il a été résolu.
Pour une raison quelconque, l'un de mes projets avait _SECURE_SCL = 1 défini en mode de libération, ce qui a provoqué l'erreur de l'éditeur de liens. – Gyuri
Une autre possibilité est un fichier projet/source définissant _HAS_ITERATOR_DEBUGGING – korbes