Thanks John, but I've now "worked around" the problem by moving back to the standard library implementation that ships with vc7.1.
I'd have done this earlier, but I used to have an unsolved problem that I have now finally pinned down - incidentally, that problem was the infamous "can't read binary files with streambuf under Windows", which is solved with Dinkum. (I wonder if other STL implementations like STLport have the same problem?)
The second of your suggestions sounds promising though, didn't think of that at all. Then again, is there any real difference between building in the IDE and linking libs that were obtained by carefully synch'ing the compiler flags?
No, there's no difference between building in your IDE or building with the command line tools, you may want to define BOOST_ALL_NO_LIB throughout to suppress automatic selection of the library name, and manually add your library to your .exe's dependencies though.
What I'd really like to know is what the heck is going on. Why am I even having multiply defined symbols? And where did that heap corruption come from?
No idea, you'd need to carefully examine command lines and the like to find out, probably the lib is built against the default std lib, and your .exe is built against the dinkumware one? John.