He leído muchas soluciones a mi problema pero ninguna me ayudó. Intenté limpiar, reconstruir. Vuelva a instalar Visual 2010 y cambie de profesional a último. Pero aún no sé por qué tengo este error. Mi proyecto se ve así: 1 Solución Exe para probar mi biblioteca estática. 1 Dll Solution biblioteca estática. El código que se convierte a dll está utilizando la función de 1 lib llamada ClassificationFramework. Proporcioné esta lib como encabezados y cpp, así que básicamente el código fuente. En la solución Exe, vinculé mi biblioteca generada + algunas otras bibliotecas para ejecutarla + ClassificationFramework.dll. Todo funciona bien cuando uso Release pero cuando cambio a Debug (porque quiero depurar algunas cosas, estoy cansado de omitir el depurador en modo de lanzamiento) me sale esto:
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
Cuando construyo en Release también recibí estas advertencias:
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
Descubrí que el depurador se salta debido a una ruta incorrecta a los archivos 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).
Cuando voy a Debug-> Windows-> Modules veo que no puede encontrar esos archivos pdb o algo así. ¿Cómo puedo decirle que esos archivos están aquí y aquí? Traté de ejecutar MSvisual como administrador, pero eso tampoco me ayudó. Utilicé el servidor microsoft para cargar archivos pdb pero tampoco me ayudó.
Realizo una pequeña actualización sobre este problema, ya que hoy tuve el mismo error en una aplicación que se vincula con una lib estática, después de migrar el antiguo proyecto de Visual 6 a Visual Studio 2012.
En mi caso, el error fue que compilé por error la versión Release de la biblioteca estática con / MDd en lugar de / MD , mientras que la aplicación es / MD en el lanzamiento. Establecer el / MD correcto en el proyecto lib estático resolvió el problema.
Esto se hace en las propiedades del proyecto
fuente
Si desea vincular deliberadamente su proyecto A en versión con otro proyecto B en depuración, por ejemplo, para mantener los beneficios generales de rendimiento de su aplicación durante la depuración, es probable que encuentre este error. Puede solucionar esto modificando temporalmente los indicadores del preprocesador del proyecto B para deshabilitar la depuración del iterador (y hacer que coincida con el proyecto A):
En las propiedades "Depuración" del Proyecto B, Propiedades de configuración -> C / C ++ -> Preprocesador, agregue lo siguiente a las Definiciones de preprocesador:
_HAS_ITERATOR_DEBUGGING = 0; _ITERATOR_DEBUG_LEVEL = 0;
Reconstruya el proyecto B en Debug, luego construya el proyecto A en Release y debería vincularse correctamente.
fuente
Tuve una falta de coincidencia entre proyectos: uno con juego de caracteres de varios bytes, el otro con Unicode. Corregir estos para acordar Unicode corrigió el problema.
fuente
El error puede ser causado al mezclar compilaciones de depuración y versiones de lanzamiento en el mismo ejecutable o dll.
fuente
Yo tuve este problema también.
Mi problema fue que había copiado / pegado la biblioteca que incluía directorios de mis configuraciones de depuración.
Así que el proyecto "Indep" incluía la biblioteca estática "Dep.lib" de "../Debug", incluso en el lanzamiento. La solución fue cambiar el directorio de la biblioteca a "../Release", por lo que capté la biblioteca compilada en versión en lugar de la biblioteca de depuración compilada anteriormente.
fuente
Tuve el mismo problema entre las bibliotecas de depuración y lanzamiento. El error estuvo en las propiedades de la solución / Propiedades de configuración / Configuraciones.
Las configuraciones de los proyectos no coincidían con la configuración / plataforma principal.
fuente
Intente cambiar la definición de macro _DEBUG a NDEBUG en las propiedades del proyecto C ++ (para la configuración de lanzamiento) Propiedades de configuración -> C / C ++ -> Preprocesador -> Definiciones de preprocesador
fuente
Última oportunidad (si otras formas no funcionan): defina la macro _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH en todos los proyectos. Deshabilitará la función "#pragma detect_mismatch" que se usa en los encabezados CRT.
fuente
_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
debajoC/C++ >> Preprocessor >> PreprocessorDefinitions
.opencv_core245.lib (dxt.obj): error LNK2038: se detectó una falta de coincidencia para '_ITERATOR_DEBUG_LEVEL': el valor '0' no coincide con el valor '2' en test.obj Recibí un error como este.
Tengo opencv_core245.lib y opencv_core245d.lib en Linker-> Input-> Additional dependenc. Como estos dos eran confusos, eliminé primero uno opencv_core245.lib. Error desaparecido
fuente
Pruebe esto: Ir a la propiedad del proyecto -> C / C ++ -> Generación de código -> Biblioteca de tiempo de ejecución Seleccionar del valor del cuadro combinado: DLL multiproceso (/ MD) Funciona para mí :)
fuente
En mi caso, tanto para Debug como para Release, la solución fue limpiar y luego reconstruir la solución completa.
Editar: verdadero en mi caso también (VS2017) paso1: limpiar el proyecto. Paso 2: cambiar el modo de configuración (de depuración a versión o viceversa). Paso 3: limpia el proyecto. Paso 4: construir en el modo de configuración requerido.
PD: para cambiar el modo de configuración, busque la configuración en el menú de compilación
fuente
Tuve el mismo problema hoy (VS2010), construí Release | Win32, luego trató de construir Debug | Win32, y recibí este mensaje.
Intenté limpiar Debug | Win32 pero el error aún persiste. Luego limpié Release | Win32, luego limpió Debug | Win32, y luego se construyó bien.
fuente
Me las arreglé para deshacerme de este error (en mi caso usando Ogre3D + Bullet) cambiando las bibliotecas de dependencias a las versiones de depuración en Propiedades del proyecto -> Enlace -> Entrada -> Dependencias adicionales (VC10).
Cambié BulletCollision.lib a BulletCollision_debug.lib (para la configuración de depuración) y se compiló.
fuente
Resolví mi problema al corregir el "Directorio de bibliotecas adicionales", este era incorrecto al indicar "$ (SolutionDir) \ Release", lo cambié en "$ (SolutionDir) \ $ (IntDir)"
Para corregirlo, abra las propiedades del proyecto -> Propiedades de configuración -> Vinculador -> General -> Directorio de bibliotecas adicionales
Espero que esto ayude a algunas personas con el mismo problema;)
fuente
También tuve este problema y surgió porque volví a hacer el proyecto y luego olvidé volver a vincularlo por referencia en un proyecto dependiente.
Por lo tanto, se vinculaba por referencia al proyecto anterior en lugar del nuevo.
Es importante saber que hay un error al volver a agregar un proyecto previamente vinculado por referencia. Debe eliminar manualmente la referencia en vcxproj y solo entonces puede volver a agregarla. Este es un problema conocido en Visual Studio según msdn.
fuente
Tuve un problema similar, pero la configuración incorrecta estaba en el archivo externo .lib del que no tenía fuentes. Si no tiene los archivos de origen , la solución más simple es simplemente cambiar el contenido del archivo .lib.
Abra el archivo .lib en un editor (usé PSPad, el bloc de notas de Windows también es posible) y reemplace todas las ocurrencias de _ITERATOR_DEBUG_LEVEL = 2 a _ITERATOR_DEBUG_LEVEL = 0
fuente
En mi caso, la definición de macro NDEBUG en las "Definiciones de preprocesador" necesitaba cambiarse a _DEBUG. Estoy construyendo una biblioteca estática para usar en un archivo .exe que se quejaba del mismo error que aparece en la pregunta. Vaya a Propiedades de configuración (menú "Proyecto", elemento de menú "Propiedades") y luego haga clic en la sección C / C ++, luego en la sección Preprocesador debajo de eso, y luego edite sus Definiciones de preprocesador para que NDEBUG se cambie a _DEBUG (para que coincida con el ajuste en el exe).
fuente
Como todas las otras respuestas, revisé mis
Configuration Properties -> C/C++ -> Preprocessor
directivas.En mi caso he tenido el
NDEBUG
definido correctamente en la versión, pero también tenía:_SECURE_SCL=1
.Eliminar eso solucionó el problema.
fuente
Pequeña adición a la ayuda anterior: recibí el error de desajuste después de agregar una libto estática a una solución VST anterior usando VST 2017. VST ahora genera "stdfax.h" para encabezados precompilados que contienen estas 2 líneas:
fuente