Saturday, January 27, 2007

wxWidgets 2.8 not working with Windows SDK

i recently formatted my harddisk and reinstalled Windows, so i started installing applications i normally use. that included VC++ Express, and since i develop applications using it for the Win32 platform, i would normally have installed the Platform SDK. however, i'd recently obtained the Windows SDK, so i used that in lieu of the PSDK. i mean, the WinSDK seems to be the successor to the PSDK, so why use older headers and libs? or so i thought. everything went smooth, and i even integrated the WinSDK with VC++ with a single click (configuring VC++ itself for native Win32 apps was a little more roundabout; see this [link]article[/link] for help). so far, so good.

since i was using wxWidgets for an application i was writing before the format, i downloaded it again and started the commandline build, according to the time-honoured instructions in the source archive. i started the build and almost immediately got shock #1: wxWidgets (or specfically, the TIFF library bundled with it) wouldn't build because windows.h was missing. as i'd integrated with VC++, i was surprised, to say the least. i checked the VC++ directory options and found nothing wrong, and windows.h was supposed to be available. checking the INLCUDE environment variable let me know that the WinSDK hadn't set environment variables when installing. after fixing it, i sat back to enjoy my build procdure until i got shock #2: some platform-specific code wasn't building. since i'd already built that version of wxWidgets before without problems, i had to surmise that it was the WinSDK acting up. installing the PSDK and removing the environment variable settings i created for the WinSDK allowed wxWidgets to build without fuss.

i'm not sure if it's the wxWidgets team or Microsoft i should blame, but since Microsoft is the company everyone loves to hate (in this case, more because the PSDK worked previously), i'll say Microsoft wasn't on the up-n-up, or why would they change the API so it would break existing code? whatever, anyway. the main point is that wxWidgets 2.8 (and most likely lower versions) doesn't work unpatched with the WinSDK, as maybe a few people would have found out by now. so version number addict, chill out. today's Win32 apps should still work on Windows Vista, so it's not that big a problem anyway. later.

No comments: