Fix: Visual Studio 2012 Update 2 breaks Windows XP targeting with ATL and/or statically linking MFC

Fix: Visual Studio 2012 Update 2 breaks Windows XP targeting with ATL and/or statically linking MFC

  • Comments 31

Recently, some of our customers reported a bug in Visual Studio 2012 Update 2 that breaks Windows XP targeting with C++ in some scenarios. Specifically, applications using ATL and/or statically linking with MFC will get the following error when run on Windows XP:

"The procedure entry point InitializeCriticalSectionEx could not be located in the dynamic link library kernel32.dll."

This issue has been fixed in Visual Studio 2012 Update 3 RC1. If you encounter this issue, please download and install this update.

  • @Haha

    I agree with you.

    I want C++11 immediately.

  • @Hoikas

    Hi Hoikas, do you mean the fix does not work for you, or do you have some coding related feedback related to the fix?

  • @J Williams

    For the redist, what files are you looking for? I see these are correctly updated: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\1033\vcredist*.exe, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\<arch>\Microsoft.VC110.MFC\mfc*.dll, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\<arch>\Microsoft.VC110.ATL\atl*.dll, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\Debug_NonRedist\<arch>\Microsoft.VC110.DebugMFC\mfc*.dll, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\*.lib, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\*.pdb, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\<arch>\*.lib, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\lib\<arch>\*.pdb, C:\Windows\SysWOW64\mfc*.dll, C:\Windows\SysWOW64\atl*.dll, C:\Windows\System32\mfc*.dll, C:\Windows\System32\atl*.dll, C:\Windows\symbols\dll\atl*.pdb, C:\Windows\symbols\dll\mfc*.pdb.

    Did you setup your windows subsystem correctly in the Property Pages?

  • I'm sad to say that even with Update 3 RC, I'm still getting the same error. I tried going back to the basics and creating a C++ app that declared InitializeCriticalSectionEx and it fails still with the same message.

  • @tim, did you set the Platform Toolset to vc110_xp?

  • > We would love to hear more feedback around C++ 11 and your experiences

    Oh, I like C++11 a lot. I enjoy working with it when I'm using Clang and GCC.

    Why? Are you considering adding support for it in VC++? Like, this decade?

    Remember when you released VC11, how adamant everyone on the VC++ team were that THIS TIME, FINALLY, you would ship feature updates out of band. We would see improved C++11 support *without* having to wait for, and then buy, VC12.

    So far, you haven't delivered on that. Oh, sure, we've seen a preview, but nothing final, nothing shippable, nothing you yourselves want us to use.

    While Clang is well on the way to having complete C++14 support, the VC++ team is asleep. As they've been for the last 5 years. Oh, that's right, 12-18 months ago, you woke up for a little bit, to tell us that NOW YOU MEANT BUSINESS. And then, well, that was about it. Back to the usual coma.

    I guess that just about sums up most of our experiences with C++11.

  • As to when C++11 support is coming, if anybody wants to play connect-the-dots with these somewhat selective quotes, feel free.

    http://blog.zorinaq.com/?e=74

    "We just can't be ... to implement C11 (sic) support, and variadic templates were just too hard to implement in a year. (But ohmygosh we turned "^" into a reference-counted pointer operator."

    "I might disagree with the priorities of our compiler team, and I might be mystified by why certain C++ features took longer to implement for us than for the competition"

    blogs.msdn.com/.../some-thoughts-on-a-comment-about-vs-2012-3.aspx

    "Update 3 is likely the last of the updates to the VS 2012 line"

    So prepare to fork out for Visual Studio vNext, and then wait for vNext Update 1 which will re-introduce Legacy Application Targeting for Downstream Operating Systems (RTM will only target operating systems that can run Metro apps).

    Hopefully Microsoft don't rewrite the Intellisense engine and find C++11 support too hard to implement (a la VS2010 and C++/CLI).

    Fingers crossed the UI gets reverted to something sensible.

  • I guess we will have to wait for the next VS. From: connect.microsoft.com/.../codename-milan-new-c-features-still-missing-in-vs-2012-update-2

    "We do not plan to release new compiler features as part of the Visual Studio 2012 updates."

  • I guess I am glad I didn't upgrade my VS 2010 to VS 2012. I am quite disappointed with Microsoft's commitment to "native" C++.

  • @Well

    There is still a nonzero probability for MS to deliver us updated compiler as part of WindowsSDK not as a VS Update. Herb Sutter reasured there will be something coming either this or next month (so his earlier promise about delivering in the first half of 2013 will hold)

  • Tomas, where and when did he reassure that?

  • Well, several places, including on twitter (‏@herbsutter)

    26 Mar See you at Build 2013, June @ Moscone... still "first half" :)

    2 Apr @tomkirbygreen As mentioned in that talk, we'll share more news in 1H13 = more news within next 3mo, promise

    18 Apr @michaelpricedev Assume you meant ":-)" ;) 198x-2011: 1 release per 2-3 years. Sep/12-Apr/13: 1 release + 2 updates + 1 CTP. #watchthisspace

  • It's dissapointing and disillusioned, what MS done with update 2. XP is living and very popular (more popular, than the following systems). thank god, we were not delivering new compiled software. MS, please "testing before placing" an update.

  • With Update 3 RC1, I'm still having this problem, using vc110_xp. I reverted to vc100, and it works fine on XP.

  • My mistake, apparently the problem with my application was not related to InitializeCriticalSectionEx, since I'm not using that function. My application still crashes on XP when built for the vc110_xp target, however.

Page 2 of 3 (31 items) 123