Eu li muitas soluções para o meu problema, mas nenhuma ajudou. Eu tentei limpar, reconstruir. Reinstale o visual 2010 e mude de profissional para final. Mas ainda não sei por que tenho esse erro. Meu projeto tem a seguinte aparência: 1 Exe Solution para testar minha biblioteca estática. Biblioteca estática de 1 solução de DLL. O código que é convertido em dll está usando a função de 1 lib chamada ClassificationFramework. Eu forneci essa lib como cabeçalhos e cpp, então basicamente código-fonte. Na solução Exe, vinculei minha biblioteca gerada + algumas outras bibliotecas para executá-la + ClassificationFramework.dll. Tudo funciona bem quando uso o Release, mas quando mudo para Debug (porque quero depurar algumas coisas, estou cansado de pular o depurador no modo de lançamento).
2>Link:
2> ClassificationFramework.lib(SampleClass.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
2>ClassificationFramework.lib(SampleClass.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(SampleNamesSet.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(SampleSet.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>ClassificationFramework.lib(DirectoryReader.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
2>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
2>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Debug\Tester.exe : fatal error LNK1319: 4 mismatches detected
Quando crio no Release, também recebi estes avisos:
1>Link:
1> Generating code
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(101): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because ptimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\directoryreader.cpp(30): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xstring(1589): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(226): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\directoryreader.cpp(60): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(199): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\sampleset.cpp(27): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1>c:\users\kasia\documents\visual studio 2010\projects\classificationframework\classificationframework\samplenamesset.cpp(59): warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations are disabled in function
1> Finished generating code
1>ClassificationFramework.lib(SampleSet.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleSet.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(SampleNamesSet.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleNamesSet.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(SampleClass.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(SampleClass.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1>ClassificationFramework.lib(DirectoryReader.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'ClassificationFramework.lib(DirectoryReader.obj)' or at 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\vc100.pdb'; linking object as if no debug info
1> Tester.vcxproj -> C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Transformer\Release\Tester.exe
Descobri que o depurador ignora por causa do caminho errado para os arquivos pdb.
'Tester.exe': Loaded 'C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\Work\Release\Tester.exe', Symbols loaded.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Unloaded 'C:\WINDOWS\SysWOW64\kernel32.dll'
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_core220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcp100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcr100.dll', Symbols loaded.
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_highgui220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\user32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\secur32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\ole32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.4770_x-ww_A689AB02\comctl32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\avifil32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\winmm.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msacm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\msvfw32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\shell32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\avicap32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\version.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\OpenCV2.2\bin\opencv_imgproc220.dll', Binary was not built with debug information.
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\imm32.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\lpk.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\SysWOW64\usp10.dll', Cannot find or open the PDB file
'Tester.exe': Loaded 'C:\WINDOWS\WinSxS\wow64_Microsoft.Windows.Common- Controls_6595b64144ccf1df_6.0.3790.4770_x-ww_8D2E3180\comctl32.dll', Cannot find or open the PDB file
The program '[4984] Tester.exe: Native' has exited with code 0 (0x0).
Quando vou para Debug-> Windows-> Modules, vejo que ele não consegue encontrar esses arquivos pdb ou algo assim. Como posso dizer a ele que esses arquivos estão aqui aqui e aqui? Tentei executar o MSvisual como administrador, mas isso também não ajudou. Eu usei o servidor microsoft para carregar arquivos pdb, mas também não ajudou.
Faço uma pequena atualização sobre esse problema, pois tive o mesmo erro hoje em um aplicativo vinculado a uma lib estática, depois de migrar o antigo projeto Visual 6 para o Visual Studio 2012.
No meu caso, o erro foi que eu compilei por engano a versão Release da lib estática com / MDd em vez de / MD , enquanto o aplicativo é / MD em release. A configuração do MD / correto no projeto estático da lib resolveu o problema.
Isso é feito nas propriedades do projeto
fonte
Se você deseja vincular seu projeto A propositalmente a outro projeto B na depuração, mantenha os benefícios gerais de desempenho do seu aplicativo durante a depuração, provavelmente ocorrerá esse erro. Você pode corrigir isso modificando temporariamente os sinalizadores de pré-processador do projeto B para desativar a depuração do iterador (e fazer com que ele corresponda ao projeto A):
Nas propriedades "Depurar" do Projeto B, Propriedades de configuração -> C / C ++ -> Pré-processador, adicione o seguinte às Definições de pré-processador:
_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;
Recrie o projeto B no Debug, em seguida, crie o projeto A no Release e ele deve ser vinculado corretamente.
fonte
Eu tinha uma incompatibilidade entre projetos: um com conjunto de caracteres de vários bytes, o outro com Unicode. A correção destes para concordar com o Unicode corrigiu o problema.
fonte
O erro pode ser causado pela mistura de compilações de depuração e compilações no mesmo executável ou dll.
fonte
Eu tive esse problema também.
Meu problema era que eu copiei / colei os diretórios de inclusão da biblioteca das minhas configurações de depuração.
Portanto, o projeto "Indep" estava incluindo a biblioteca estática "Dep.lib" de "../Debug", mesmo no lançamento. A correção foi alterar o diretório da biblioteca para "../Release", então eu peguei a biblioteca criada pelo release em vez da biblioteca de depuração criada anteriormente.
fonte
Eu tive o mesmo problema entre as bibliotecas de depuração e lançamento. O erro ocorreu nas propriedades da solução / Propriedades das configurações / Configurações.
As configurações do projeto não coincidiram com a principal configuração / plataforma.
fonte
Tente alterar a definição da macro _DEBUG para NDEBUG nas propriedades do projeto C ++ (para configuração da Versão) Propriedades de Configuração -> C / C ++ -> Pré-processador -> Definições do Pré-processador
fonte
Última chance (se outras maneiras não funcionarem): defina a macro _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH em todos os projetos. Desabilitará o recurso "#pragma detect_mismatch" usado nos cabeçalhos CRT.
fonte
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
emC/C++ >> Preprocessor >> PreprocessorDefinitions
.opencv_core245.lib (dxt.obj): erro LNK2038: incompatibilidade detectada para '_ITERATOR_DEBUG_LEVEL': o valor '0' não corresponde ao valor '2' no test.obj Eu recebi um erro como este.
Eu tenho opencv_core245.lib e opencv_core245d.lib no vinculador-> entrada-> dependência adicional. Como esses dois eram conflitantes, removi o primeiro opencv_core245.lib. Erro desaparecido.
fonte
Tente isto: Vá para a propriedade do projeto -> C / C ++ -> Geração de código -> Biblioteca de Tempo de Execução Selecione no valor da caixa de combinação: DLL Multiencadeada (/ MD) Funciona para mim :)
fonte
No meu caso, para Debug e Release, a solução era limpar e reconstruir a solução inteira.
Edit: true no meu caso também (VS2017) step1: limpe o projeto. step2: altere o modo de configuração (de depuração para release ou vice-versa). passo 3: limpe o projeto. step4: construa no modo de configuração necessário.
PS: para alterar o modo de configuração, localize as configurações no menu build
fonte
Eu tive o mesmo problema hoje (VS2010), criei Release | Win32, em seguida, tentou criar depuração | Win32, e recebi esta mensagem.
Eu tentei limpar o Debug | Win32, mas o erro ainda persistiu. Eu então limpei Release | Win32, depois limpo Debug | Win32 e, em seguida, ele construiu bem.
fonte
Consegui me livrar desse erro (no meu caso, usando o Ogre3D + Bullet) alterando as bibliotecas de dependência para as versões de depuração em Propriedades do projeto -> Vinculador -> Entrada -> Dependências adicionais (VC10).
Alterei BulletCollision.lib para BulletCollision_debug.lib (para configuração de depuração) e ele foi compilado.
fonte
Resolvi meu problema ao corrigir o "Diretório de biblioteca adicional", este estava errado ao indicar "$ (SolutionDir) \ Release", mudei em "$ (SolutionDir) \ $ (IntDir)"
Para corrigi-lo, abra as propriedades do projeto -> Propriedades de Configuração -> Vinculador -> Geral -> Diretório Adicional de Bibliotecas
Espero que isso ajude algumas pessoas com o mesmo problema;)
fonte
Eu também tive esse problema e surgiu porque refiz o projeto e esqueci de vinculá-lo novamente por referência em um projeto dependente.
Assim, foi vinculado por referência ao projeto antigo, em vez do novo.
É importante saber que há um erro ao adicionar novamente um projeto vinculado anteriormente por referência. Você precisa excluir manualmente a referência no vcxproj e só então pode adicioná-la novamente. Esse é um problema conhecido no Visual studio, de acordo com o msdn.
fonte
Eu tive um problema semelhante, mas a configuração errada estava no arquivo .lib externo do qual eu não tinha fontes. Se você não possui os arquivos de origem , a solução mais simples é alterar apenas o conteúdo do arquivo .lib.
Abra o arquivo .lib em um editor (usei o PSPad, também é possível o bloco de notas do Windows) e substitua todas as ocorrências de _ITERATOR_DEBUG_LEVEL = 2 a _ITERATOR_DEBUG_LEVEL = 0
fonte
No meu caso, a definição da macro NDEBUG nas "Definições do pré-processador" precisava ser alterada para _DEBUG. Estou criando uma biblioteca estática para uso em um .exe que estava reclamando do mesmo erro listado na pergunta. Vá para Propriedades de configuração (menu "Projeto", item de menu "Propriedades") e clique na seção C / C ++, depois na seção Pré-processador abaixo disso e edite suas Definições de pré-processador para que NDEBUG seja alterado para _DEBUG (para coincidir com o configuração no exe).
fonte
Como todas as outras respostas, verifiquei minhas
Configuration Properties -> C/C++ -> Preprocessor
diretrizes.No meu caso, eu tinha o
NDEBUG
definido corretamente no Release, mas também tinha:_SECURE_SCL=1
.A remoção desse problema corrigiu o problema.
fonte
Pequena adição à ajuda acima: recebi o erro de incompatibilidade após adicionar uma lib estática a uma solução VST mais antiga usando o VST 2017. O VST agora gera "stdfax.h" para cabeçalhos pré-compilados contendo estas 2 linhas:
fonte