Je convertissais mes projets de VS2010 en VS2012.Mais je reçois une erreur de l'éditeur de liens _MSC_VER dans certains projets. Après une longue navigation sur Google, j'ai découvert que le problème était dû à la liaison d'une bibliothèque créée dans VS2010 à VS2012.
Comment savoir quel projet est à l'origine de l'erreur? Ici, je cite l'erreur:
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
Vous essayez de lier des objets compilés par différentes versions du compilateur. Ce n'est pas pris en charge dans les versions modernes de VS, du moins si vous utilisez la bibliothèque standard C++. Les différentes versions de la bibliothèque standard étant incompatibles avec les binaires, toutes les entrées de l'éditeur de liens doivent donc être compilées avec la même version. Assurez-vous de recompiler tous les objets à lier.
L'erreur du compilateur nomme les objets impliqués afin que les informations de la question aient déjà la réponse que vous recherchez. Plus précisément, il semble que la bibliothèque statique que vous liez doit être recompilée.
La solution consiste donc à recompiler Projectname1.lib avec VS2012.
pour chaque projet de votre solution, assurez-vous que
Propriétés> Config. Propriétés> Général> Plate-forme
est un pour tous, v100 pour visual studio 2010, v110 pour visual studio 2012
vous pouvez également travailler sur v100 à partir de visual studio 2012
J'importais aussi des projets de VS2010 à VS 2012. J'avais les mêmes erreurs. Les erreurs ont disparu lorsque j'ai réinitialisé Propriétés> Config. Propriétés> Général> Platform Toolset to v100 (VS2010). Cela pourrait ne pas être la bonne approche, cependant.
J'ai mis à niveau de 2010 à 2013 et après avoir modifié l'ensemble des outils de la plate-forme du projet, je dois cliquer avec le bouton droit de la souris sur la solution et choisir Retarget ... pour la faire fonctionner.