Pergunta

Estou tentando portar um pequeno aplicativo meu do Win XP e VS 2005 para vencer 7 e vs 2010.

O aplicativo compila e é executado sem problemas no modo de depuração, no entanto, no modo de liberação, recebo o seguinte erro:

pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for 
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj

Onde devo começar a verificar?

Foi útil?

Solução

Seu aplicativo está sendo compilado no modo de liberação, mas você está vinculando a versão de depuração do PCRE, que tinha /MTD (ou similar), causando assim a incompatibilidade no nível de depuração do iterador no CRT.

Recompile PCRE no modo de liberação para corresponder ao seu próprio aplicativo.

o detect_mismatch Pragma No VS 2010, é o que faz com que esse erro seja emitido.

Ver http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (Pesquise por _iterator_debug_level)

Outras dicas

Eu tive o mesmo erro. No meu caso, a solução é fácil: eu tinha um projeto A, dependendo de outro projeto B. B tinha uma definição de pré -processador _debug no modo de depuração e não.

Basta adicionar _debug ao projeto A (Project-> Properties-> C ++-> Preprocessador-> Definições de pré-processador) e terminar.

Meu problema era que o projeto dependente usado "Use conjunto de caracteres de vários bytes"
Sob Generl-> Conjunto de caracteres. Enquanto outro projeto tinha valor "não definido"

Isso também pode ser causado pela definição da definição de pré -processador _HAS_ITERATOR_DEBUGGING=0 no projeto B e não em um onde a produz um Lib usado por B.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top