
Robert Ramey wrote:
a) b) would it not make more sense for the filesystem test use the dll version of the library when the dll version of the c++ library is being used? By the same token I would expect that if the static version of the c++ library is being used, then the static version of the filesystem library would be used. Of course this isn't a requirement, but just a presumption that the most likely scenario is that a user that wants to use C++ libraries in dll from would likely want the same for other libraries.
I have argued this case before in general, and agree with it. In all the dlls and libs which I have ever created as a Windows programmer I have followed this pattern. When distributing third-party libraries I think it is normal to distribute either an all dll system, with all dlls using the dll version of the compiler's run-time library, or a single executable, with all libraries linked being static libraries which use the compiler's static version of the run-time library. I know that whether the dll or static version of the run-time library is used can be detected at compile time from preprocessor #defines for Microsoft's Visual C++ and Borland's C++ Builder but I do not know if this is the case for other implementations.