I wrote an opinion piece in which I flamed Thomas R. Nicely's assertion that Microsoft, through nefarious means, was forcing everyone to use nothing but Microsoft development tools under Vista. Nicely was using an obsolete version of gcc and djgpp to build applications, and Nicely had found a bug in that combination that kept him from allocating more than 32MiB under Vista. His sample code did indeed fail under Vista (and Windows Server 2003 as I discovered) when built with his tool chain. Lewis Metler (lamlaw) picked it up and used it to bolster his case against Microsoft, wondering if this was yet another attempt by Microsoft to further their monopolistic lock. Metler's done a lot of good writing about Microsoft's abuses and showcasing excellent examples, but Nicely's page is not one of them.
At the time of my original post I stated that Nicely's problems were operator error and feet dragging on his part. In his original post, Nicely stated he was using gcc 3.0.2 and djgpp 2.03. I pointed out that either of those tools (if not both) were long in the tooth and contributed to his problems.
And so it stayed until I got a comment on the entry a few days ago, where the commenter noted that Nicely stated he was using gcc 4.12 (instead of 4.1.2; call me anal, but version numbers should be properly stated). I went back, and sure enough, his original page had been updated and more information added. He also added points to the end of his page lamenting how people felt he was at fault. It was at this point I decided to get to the bottom of his problem, at least to my satisfaction. And so I grabbed and installed Trolltech's Qt Windows Open Source 4.2.3 on Windows Server 2003 and Vista Home Premium.
Windows Server was installed by me on an Athlon 64-based Boxx at work. I installed the 32-bit version. Vista Home Premium came installed on my daughter's new Toshiba notebook, a Satellite A135. I installed Qt 4.2.3 on both, and in the process, installed MinGW. MinGW comes with gcc 3.4.2 and a minimal set of tools and libraries to build C and C++ applications on Windows. I use it in conjunction with Qt to build portable open GUI applications between Linux and Windows. I also used it to successfully build Nicely's sample C code. The results of the compile and run follow.
I ran the test first on Windows Server 2003. I unzipped the sources from Nicely's website and ran his pre-compiled binary. Sure enough, it failed as he indicated. I then recompiled his example code and re-ran the test again with my binary (vista2.exe). It succeeded, as you will note below.
I then borrowed my daughter's notebook long enough to install the same set of tools and run the same tests again. As before, Nicely's binary failed, and my built binary ran successfully.
I should note that even though I did not execute a directory listing, the size of the binary built was the same on both Windows Server 2003 and Vista (as it should be).
This just goes to reinforce my opinion that (1) Nicely is wrong in his assumption and that (2) he needs to use a better set of tools that what he has. I have used both Cygwin and MinGW on Windows, and for the cross-compilation and utility writing I perform, they've never given me trouble. I consider Nicely's problem solved (to my satisfaction). I think Nicely needs to upgrade his open source development environment and go find something else to complain about.