5
votes

My project is compiling and running OK in debug and release modes in VS 2010. Today I tried to compile it with VS 2012 and I got this error :

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

I searched for "_MSC_VER" in the code but I could not find any match. Neither could I find "1600" or "1700".

So I am wondering how I can solve this problem.

4
Did you just copied files to 2012 folders or created a fresh project and imported?huseyin tugrul buyukisik
_MSC_VER is a predefined macro, so it's built in and you won't find it in the sources. (Apparently its value is 1600 in VS2010 and 1700 in VS2012.) Did you copy any binary files over, anything intrinsic to VS2010, compiled object files? Are you sure the newer compiler isn't trying to access older libraries? Do new projects you create with VS2012 compile?Mr Lister
Hey, look what I found: Help with Linker error LNK2038 !Mr Lister
Don't mix .lib files that you compiled with VS2010 with .obj files that you compiled with VS2012. The compiler doesn't guarantee that object layouts are compatible between different versions of the compiler, particularly those from the standard C++ library. Rebuild everything.Hans Passant

4 Answers

5
votes

Looks like you're using a .lib from vc2010 in vc2012 (at a guess it looks like a PCRE library). You'll need to recompile all your .libs or run-time link with the DLLs (ie LoadLibrary, GetProcAddress etc.).

3
votes

In Project Properties, select General and then change the "Platform Toolset" setting to "Visual Studio 2010 (v100)." After I did that, my code compiled fine with the original libraries.

1
votes

Looking it up at http://msdn.microsoft.com/en-us/library/b0084kay.aspx It seems that variable holds the compiler's version number. I would think the best way to fix it would be to create a new project in 2012 and add the source files to the new project.

0
votes

NO, all that you need is is check properties of the project. There exist link to old project files. Need open project properties on page ".NET Framework and links" there del all links end add new for new 2012 project files.