c++ - Ayuda con el error Linkner LNK2038!
visual-studio-2010 linker (4)
Intento portar una pequeña aplicación mía desde Win XP y VS 2005 a Win 7 y VS 2010.
La aplicación se compila y se ejecuta sin problemas en el modo de depuración, sin embargo, en el modo de lanzamiento, aparece el siguiente error:
pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for
''_ITERATOR_DEBUG_LEVEL'': value ''0'' doesn''t match value ''2'' in LoginDlg.obj
La peor parte es que no sé dónde debería comenzar a verificar ...
Cualquier ayuda será apreciada.
Esto también puede deberse a que establece la definición del preprocesador _HAS_ITERATOR_DEBUGGING=0
en el proyecto B y no en A, donde A produce una lib utilizada por B.
Mi problema fue que el proyecto dependiente usó "Usar conjunto de caracteres de múltiples bytes"
en Generl -> Conjunto de caracteres. mientras que otro proyecto tenía un valor "Sin establecer"
Su aplicación se está compilando en modo de lanzamiento, pero está enlazando con la versión de depuración de PCRE, que tenía / MTd (o similar) configurado, causando así la falta de coincidencia en el nivel de depuración del iterador en el CRT.
Recompile PCRE en modo de lanzamiento para que coincida con su propia aplicación.
El pragma detect_mismatch
en VS 2010 es lo que hace que se emita este error.
Consulte http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (busque _ITERATOR_DEBUG_LEVEL)
Yo tenía el mismo error. En mi caso, la solución es fácil: tenía un proyecto A dependiendo de otro proyecto B. B tenía una definición de preprocesador _DEBUG en modo de depuración y A no.
Simplemente agregue _DEBUG al proyecto A (project-> properties-> c ++ -> preprocessor-> preprocessor definitions) y listo.