Reason #8 to not be so anxious to update your Platform SDK?

by Michael S. Kaplan, published on 2005/04/27 04:50 -04:00, original URI:

Back in March, I gave Reason #124 to update your Platform SDK from time to time (it was to pick up a fix to an AppVerifer bug that existed in unicows.lib).

A comment from Nektar suggested that there were good reasons to be cautious about doing such updates. And he gave seven very good reasons.

I will now, to prove that I can argue both sides of an issue, suggest an eighth. :-)

Many people who have been compiling with VC 6.0 have noted a "debugging information corrupt" error showing up in their debug builds that include MSLU.

As usual, one of our internationalization MVPs (Ted) stepped up explain in the most recent post to the microsoft.public.platformsdk.mslayerunicode newsgroup:

...that's a known issue with the February 2003 SDK and later.  The unicows.lib contains debugging information compatible only the VC 7 and above.  There's nothing that can be done about this, unfortunately. Microsoft decided that Visual Studio 6.0 is no longer a supported platform for any future Platform SDKs.

I thought I would explain a bit of the backstory about the issue with the Platform SDK. :-)

Basically three facts unintentionally cause the problem. Since there are three we can call it a conspiracy (sorry, my Law & Order background is showing through again!). The three facts are:

  1. The .LIB files that make up the Platform SDK are built in the same tree as Windows itself, so that day by day the files like kernel32.lib will have in them whatever they ought to have for being considered a .LIB file in the version of the Platform SDK that goes with that version of Windows.
  2. The toolset used to build Windows (compiler, linker, etc.) is upgraded regularly, to pick up fixes of the sorts of bugs that only a project as huge and complex as Windows can find.
  3. The folks who build the toolset over in the Developer Division upgrade the format of debugging information from time to time, and then sometimes remove the older formats as the years pass. Sometimes the formats are not compatible with the older toolsets.

When you add these three facts together with a fourth fact:

  1. The MSLU .lib file, unicows.lib, has code inside of it

the unintentional conspiracy causes the problem with the older toolset in VC6 not working with the debugging information in unicows.lib. The retail build still works just fine, at least. But the debug build will not work.

Luckily Ted gives the workaround:

To workaround this issue, you'll have to find another unicows.lib from an SDK before February 2003 SDK (e.g. the October 2002 SDK).  You can obtain that here:

The older .LIB file will allow VC6 to work properly.


This post brought to you by "ű" (U+0171, a.k.a. LATIN SMALL LETTER U WITH DOUBLE ACUTE)

# Ted on 27 Apr 2005 10:57 AM:

If you don't want to download the whole 400 megabytes of SDK and just want unicows.lib from the October 2002 SDK - you can grab it here:

download above CAB file, then open with WinZip, extract the file unicows_lib.6DA6B05C_F046_4C67_A496_DF436A2C490B, then rename it to unicows.lib and copy to your LIB folder.

# Heath Stewart on 27 Apr 2005 11:04 AM:

Not to nit-pick, but the reason you give not to update to the newest Platform SDK should make users anxious. I believe the word you're looking for is "eager": "Reason #8 to not be so eager to update your Platform SDK?".

If I still used VC6 and my PDB files would be "corrupt", that's definitely going to cause me anxiety about using it - so I would be anxious. It completely changes the meaning of your subject, which is apparently what you intended. :)

# Michael S. Kaplan on 27 Apr 2005 11:44 AM:

Well, anxious means either, technically. From

"Usage Note: Anxious has a long history of use roughly as a synonym for eager, but many prefer that anxious be used only when its subject is worried or uneasy about the anticipated event. In the traditional view, one may say We are anxious to see the strike settled soon but not We are anxious to see the new show of British sculpture at the museum. Fifty-two percent of the Usage Panel rejects anxious in the latter sentence. But general adoption of anxious to mean “eager” is understandable, at least in colloquial discourse, since it provides a means of adding emotional urgency to an assertion. It implies that the subject so strongly desires a certain outcome that frustration of that desire will lead to unhappiness. In this way, it resembles the informal adjective dying in sentences such as I'm dying to see your new baby."

# Heath Stewart on 27 Apr 2005 11:59 AM:

But then you're only promoting "colloquial discourse". Aaagh! :)

I also wanted to add - and hope that this works - that since the retail build of unicows.lib is supposed to work okay, users can get the stripped, public PDB file from our public symbol server by setting the _NT_SYMBOL_PATH environment variable to srv*[Local cache directory]* You can also put that string in the VS.NET project property "Debugging\Symbol Path". I typically find it easier to just set the environment variable, though, since I use a slew of debuggers like ntsd.exe, windbg.exe, and - on occassion - VS.NET.

# Michael S. Kaplan on 27 Apr 2005 12:00 PM:

I am about as colloquial as they come. :-)

# Michael S. Kaplan on 27 Apr 2005 12:06 PM:

I am pretty sure the Symbol Server does not currently have the symbols. It is on a to-do list, fwiw. But this would make the first official "public" request....

go to newer or older post, or back to index or month or day