The compiler run-time math library libmmd.dll can change its contents from release to release of the compiler. Usually that's not a problem, but sometimes symbols can appear or disappear from the library.
At NAG we build libraries with ifort, and redistribute libmmd.dll with our libraries. Our users sometimes complain that they have other copies of libmmd.dll on their systems, which are incompatible with the ones we distribute. This can break their applications which depend on NAG libraries, or break their other applications, depending on how their PATH environment variable is set up. Naturally they then complain to us about it.
I think that the recommended solution is to copy libmmd.dll into the same directory as the executable that needs it. The problem with this is that if you have many applications all depending on the NAG Library, you can end up with many copies of libmmd.dll lying around all over your system. Certainly our users don't like the idea - they would prefer one copy of this library (and other run-time libraries).
I would like to suggest that run-time libraries like libmmd.dll should have version numbers attached, which could be upgraded when the contents become incompatible. I guess that for our purposes we could avoid this problem by renaming the dll to something else, and using an object file editor to hack the internal name of the library to match. I doubt very much though that the Intel compiler team would approve of this idea.
Does anyone know of any other good way around the problem?
Numerical Algorithms Group, Oxford