La compilation d'un MFC application à partir de Visual Studio 2010 à 2012 RC résultats dans LNK2038
Mon projet est la compilation et l'exécution OK en debug et release modes de VS 2010.
Aujourd'hui j'ai essayé de le compiler avec visual studio 2012 et j'ai eu cette erreur :
1> Generating Code...
1>pcrecppd.lib(pcrecpp.obj) : error LNK2038: mismatch detected for '_MSC_VER':
value '1600' doesn't match value '1700' in NamesEditorDlg.obj
J'ai cherché "_MSC_VER" dans le code, mais je ne pouvais pas trouver n'importe quel match. Ni ce que je pourrais trouver "1600" ou "1700".
Donc, je me demande comment je peux résoudre ce problème.
Avez-vous venez de copier des fichiers à 2012 des dossiers ou créé un projet fresh et importés?
J'ai copié les fichiers .
_MSC_VER est une macro prédéfinie, de sorte qu'il est intégré et vous ne le trouverez pas dans les sources. (Apparemment, sa valeur est de 1600 dans VS2010 et 1700 dans VS2012.) Avez-vous copie de fichiers binaires de plus, rien d'intrinsèque à VS2010, l'objet compilé les fichiers? Êtes-vous sûr que le nouveau compilateur n'est pas en essayant d'accéder plus anciennes bibliothèques? Faire de nouveaux projets que vous créez avec VS2012 compiler?
Hé, regardez ce que j'ai trouvé: l'Aide à l'éditeur de liens d'erreur LNK2038 !
Ne pas mélanger .lib les fichiers que vous avez compilé avec VS2010 .obj fichiers que vous avez compilé avec VS2012. Le compilateur ne garantit pas que l'objet de mises en page sont compatibles entre les différentes versions du compilateur, en particulier ceux de la bibliothèque C++ standard. Tout reconstruire.
J'ai copié les fichiers .
_MSC_VER est une macro prédéfinie, de sorte qu'il est intégré et vous ne le trouverez pas dans les sources. (Apparemment, sa valeur est de 1600 dans VS2010 et 1700 dans VS2012.) Avez-vous copie de fichiers binaires de plus, rien d'intrinsèque à VS2010, l'objet compilé les fichiers? Êtes-vous sûr que le nouveau compilateur n'est pas en essayant d'accéder plus anciennes bibliothèques? Faire de nouveaux projets que vous créez avec VS2012 compiler?
Hé, regardez ce que j'ai trouvé: l'Aide à l'éditeur de liens d'erreur LNK2038 !
Ne pas mélanger .lib les fichiers que vous avez compilé avec VS2010 .obj fichiers que vous avez compilé avec VS2012. Le compilateur ne garantit pas que l'objet de mises en page sont compatibles entre les différentes versions du compilateur, en particulier ceux de la bibliothèque C++ standard. Tout reconstruire.
OriginalL'auteur Wartin | 2012-08-04
Vous devez vous connecter pour publier un commentaire.
Dirait que vous êtes en utilisant un .lib de vc2010 dans vc2012 (au jugé, il ressemble à une librairie PCRE). Vous aurez besoin de recompiler tous vos .libs ou de l'exécution lien avec les Dll (c'est à dire la fonction LoadLibrary GetProcAddress etc.).
OriginalL'auteur snowdude
Dans les Propriétés du Projet, sélectionnez Général, puis de changer la "Plate-forme d'Outils de" réglage "de Visual Studio 2010 (v100)." Après je l'ai fait, mon code compilé correctement avec l'original bibliothèques.
OriginalL'auteur Memitim
Regardant à http://msdn.microsoft.com/en-us/library/b0084kay.aspx Il semble que la variable contient le numéro de version du compilateur. Je pense que le meilleur moyen pour résoudre ce problème serait de créer un nouveau projet en 2012 et ajouter les fichiers source pour le nouveau projet.
OriginalL'auteur Keitau
NON, tout ce que vous avez besoin est de vérifier les propriétés du projet. Il n'existe pas de lien de vieux fichiers de projet. Besoin d'ouvrir les propriétés du projet sur la page ".NET Framework et de liens", il y del tous les liens fin, ajouter le nouveau pour le nouveau projet 2012 fichiers.
OriginalL'auteur Orion