Visual C++ 2008 static linking help

I know this is about VC++ specifically, but I just don't trust Microsoft's boards that much. Plus I know the past several articles on the main page dealt with VC++.

Anyway, VC++-compiled binaries seem to enforce that I use the MSVC 9.0 runtime DLLs and manifest file regardless if I specify multi-threaded (or debug) or multi-threaded DLL (or debug). I know this because the statically-linked runtime in my binary seemed to work on my computer, but when I transferred it to my parents' computer, the binary began whining about the absence of the runtime DLLs. It worked on my computer because VC++ installs the runtime DLLs of course.

I just don't want to force people who use my software to install runtimes. Sure, for many, it's not that big a deal. But the general population would see this requirement and not bother. Also, if I were to distribute the runtime, that would make for a bigger download. Likely I want to make more than one project, and I don't want to distribute the runtime in every single download.

That's makes your executable larger, but you have no dependencies at that point. The size increase to your executable is related to the functions the compiler pulls in from the library, but it is probably smaller than the redistributable package.

Another solution is not to use MFC.

Of course, that means either another framework, which isn't a bad idea, but also has the same issue of increasing the target size vs a DLL which you would package as part of your install, depending on the framework you choose.

Commercial software packages install the runtimes themselves. You aren't the only one who is frustrated by this. With continuous changes in Visual Studio, you never know what your runtime link situation will be after the next release of the development environment. Some people go to such extremes as to completely eliminate any dependence on the C or C++ runtimes altogether by using NO standard functions.

If you are using straight, standard C++, you might be able to use STLport, a free implementation of the C++ standard library and STL which you can link statically.

If you are using some of Microsoft's more nonportable C++ elements like MFC, you'll just have to suck it up and create an installer which makes sure these components are present when installing your software. That's what everyone else does (how do people expect commercial software works?)