web-dev-qa-db-fra.com

_iterator_debug_level La valeur '0' ne correspond pas à la valeur '2'

Je viens de déplacer une solution Visual Studio (C++) sur un autre ordinateur, de configurer tous les répertoires et paramètres à ma connaissance et de nettoyer/reconstruire la solution. J'obtiens l'erreur ci-dessus sur un tas de .obj sur la compilation, je ne sais pas quoi faire à ce sujet.

38
tweetypi

Il semble que vous mélangez des fichiers objets créés avec différents paramètres. Essayez de faire une régénération complète et vérifiez tous les paramètres du fichier de projet pour vous assurer que la macro _ITERATOR_DEBUG_LEVEL est la même (par exemple, vous ne mélangez pas le débogage et la libération des objets construits).

29

Le mélange de binaires (fichiers objets) est une des raisons; une autre (que j'ai rencontrée) est la fausse définition du _DEBUG macro dans la version. _DEBUG n'est pas une macro standard, mais utilisée par Microsoft.

Après avoir édité le fichier . Vcxproj - dans Emacs, j'ai mal tapé _DEBUG au lieu de NDEBUG pour la version, et a rencontré précisément la même erreur de construction.

17
Andreas Spindler

Dans certains cas, mélanger les options dans

Propriétés> Propriétés de configuration> C/C++> Génération de code> Bibliothèque d'exécution

Entre bibliothèque (s) incluse (s) et projet en cours de travail peut provoquer ce problème.

Selon l'utilisation, définissez-le comme /MD ou /MT ou /MDd ou /MTd uniformément dans tous les projets.

J'essaie de résoudre ce problème depuis cinq jours. Le code de la bibliothèque de nuages ​​de points (PCL) se construit correctement 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 finale héritait de _DEBUG, je l'ai donc décochée sous les propriétés du projet >> Préprocesseur >> Définitions du processeur et cela a été résolu.

1
John Duke

J'ai découvert (bizarrement) que _CRT_NON_CONFORMING_SWPRINTFS en est la cause. Lorsque je le supprime, je ne reçois pas la valeur "_iterator_debug_level '0' ne correspond pas à la valeur '2'" mais à la place l'avertissement suivant:

Erreur 6 erreur C4996: '_swprintf': swprintf a été modifié pour se conformer à la norme ISO C, en ajoutant un paramètre de comptage de caractères supplémentaire. Pour utiliser le swprintf Microsoft traditionnel, définissez _CRT_NON_CONFORMING_SWPRINTFS.

0
Michael Haephrati