Ayuda con el error del enlazador LNK2038!


Estoy tratando de portar una pequeña aplicación mía de Win XP y VS 2005 a Win 7 y VS 2010.

La aplicación compila y se ejecuta sin problemas en el modo de depuración, sin embargo, en el modo de liberación obtengo 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 se donde debería empezar a revisar...

Cualquier ayuda será muy apreciada.

Author: Wartin, 2010-10-31

4 answers

Su aplicación se está compilando en modo release, pero está enlazando con la versión de depuración de PCRE, que tenía /MTd (o similar) establecido, lo que causa el desajuste en el nivel de depuración del iterador en el CRT.

Recompile PCRE en modo release para que coincida con su propia aplicación.

El detect_mismatch pragma en VS 2010 es lo que causa que se emita este error.

Véase http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (buscar _ITERATOR_DEBUG_LEVEL)

 35
Author: Alex Budovski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-31 05:24:21

Tuve el mismo error. En mi caso, la solución es fácil: tuve 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(proyecto->propiedades->c++->preprocesador->definiciones de preprocesador) y listo.

 18
Author: Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 15:35:36

Esto también puede ser causado por establecer 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.

 3
Author: Art,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-28 00:25:40

Mi problema era que el proyecto dependiente usaba "Usar Conjunto de caracteres Multi-Byte"
en Generl> > Conjunto de caracteres. mientras que otro proyecto tenía un valor" No establecido "

 2
Author: Roman Bober,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-28 11:07:58