VC6 and dll hell was fun.
VC7, VC7.1 got better because the compiler was a bit more standard. Redistributing files wasn't as bad, just copy msvcrt71.dll or msvcr71.dll to your application directory and things worked.
VC8 changes things once again. Introducing side-by-side assemblies. If I were a C# guy, I'm sure I'd be familiar with assemblies by now, but alas, I prefer the C/C++. So here are some links on how to deal with the VC8 CRT dlls, so that your applications don't crash after you distribute them because your missing required dlls.
- A more thorough explanation of VC8 CRT and WinSxS
- Using Windows Installer XML (WiX) and VC8 CRT Merge Modules
I'm an InnoSetup fan, but without merge module support, or a better way to install the VC8 CRT dlls the above works.
- Silently install vcredist_x86.exe Though for InnoSetup and other non-msi based installs, silently installing vcredist_x86.exe is less of a kludge.
- VC8 C/C++ CRT Distrubution/Deployment Howto Offers various ways to install the VC8 CRT dlls. The xcopy way looks appealing, though some of the fine print suggests Windows 2000 server doesn't like things this way.
- VC8 Guidelines for Creating Side-By-Side (WinSxS) Assemblies You maybe wondering what side-by-side assemblies are. This may give some insight to you.