Take my latest gaff as an example. Now I've been coding C++/cli mixed mode dlls since 2005, but I'd taken some time off right before Windows 7 arrived. Well, it was time to get back into the saddle, so I started work on a long dormant project and got it to a Beta state.
I rolled out the debug dll to my testers and when they tested it on Windows 7, Boom!.
Ok, time for some research .... lots of time for research.
Well, I finally found - that in a non-/cli C++ dll, I could use the /MT compiler switch and it would work just fine on XP and Win7. But if I used the /MD compiler switch, which is required to use C++/cli, it would still run on a clean XP install, but not on a clean Win7 install.
After many posts on many different forums, I decided to try making a install package (which I've NEVER had to do before - its just a dll after all!) but Visual Studio pulled in two additional files, that it said were needed to run.
Well - Success!! Sort of. But, I happily posted my results on the various forums. One reply (Thanks Peter) pointed out that they were Debug files and that it may be a licence issue if I were to disseminate them.
That got me to wondering if this was all a Debug/Release mode issue.
Well, it was. I started with a new copy of my Win7 Virtual PC that also installs the C++ runtime files.
I then pushed a debug version to it just to verify that we still had the issue. Yep.
Then I pushed a release version to it and viola! It works. Dumb, dumb, dumb!
Why do I make things so hard for myself?