c++ - studio - error LNK2038: desajuste detectado para ''_MSC_VER'': el valor ''1600'' no coincide con el valor ''1700'' en CppFile1.obj
nmake download (4)
Estaba convirtiendo mis proyectos de VS2010 a VS2012. Pero recibo un error del enlazador _MSC_VER en ciertos proyectos. Después de una larga navegación por google, descubrí que el problema se debe a la vinculación de una biblioteca creada en VS2010 con VS2012.
¿Cómo puedo averiguar qué proyecto está causando el error? Aquí estoy citando el error:
Error 6 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile2.obj) Projectname2
Error 15 error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z) D:/ProjectLocation/Projectname1.lib(CppFile3.obj) Projectname2
Error 13 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile4.obj) Projectname2
Error 12 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile5.obj) Projectname2
Error 10 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile6.obj) Projectname2
Error 11 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile7.obj) Projectname2
Error 9 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile8.obj) Projectname2
Error 4 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile9.obj) Projectname2
Error 14 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile10.obj) Projectname2
Error 7 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile11.obj) Projectname2
Error 8 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile12.obj) Projectname2
Error 5 error LNK2038: mismatch detected for ''_MSC_VER'': value ''1600'' doesn''t match value ''1700'' in CppFile1.obj D:/ProjectLocation/Projectname1.lib(CppFile13.obj) Projectname2
Actualicé de 2010 a 2013 y después de cambiar todos los Platform Toolset de los proyectos, necesito hacer clic derecho en la Solución y elegir Retarget ... para que funcione.
Está intentando vincular objetos compilados por diferentes versiones del compilador. Eso no es compatible con las versiones modernas de VS, al menos no si está utilizando la biblioteca estándar de C ++. Las diferentes versiones de la biblioteca estándar son incompatibles binariamente y por lo tanto necesita todas las entradas del enlazador para ser compiladas con la misma versión. Asegúrese de volver a compilar todos los objetos que se van a vincular.
El error del compilador nombra los objetos involucrados, por lo que la información de la pregunta ya tiene la respuesta que está buscando. Específicamente, parece que la biblioteca estática que está vinculando necesita ser compilada nuevamente.
Entonces la solución es recompilar Projectname1.lib con VS2012.
También estaba importando algunos proyectos de VS2010 a VS 2012. Tuve los mismos errores. Los errores desaparecieron cuando desactivé Propiedades> Configuración. Propiedades> General> Platform Toolset a v100 (VS2010). Sin embargo, ese podría no ser el enfoque correcto.
para cada proyecto en su solución, asegúrese de que
Propiedades> Config. Propiedades> General> Platform Toolset
es uno para todos ellos, v100 para visual studio 2010, v110 para visual studio 2012
también puedes estar trabajando en v100 desde visual studio 2012