I developed and support an internal C application developed in MSVC++ (native code) that accesses an OMQ broker in a factory shop floor environment. It has worked fine with OMQ 4.3 and 4.4u1 for well over a year. A developer recently installed 4.5.1 on his workstation and attempted to run the application, and received the Windows error dialog saying that MSVCR90.DLL could not be found. Both 4.3 and 4.4u1 are built against the same DLL and find it just fine, as does another 3rd party library that the application also uses. Nothing else about the system or application has changed: system PATH correctly points to the proper 4.5.1 mq\lib and nss\lib folders, the latest vcredist_x86.exe has been installed and reinstalled multiple times, etc. We have tried on 3 different Windows 7 developer workstations and a Windows 2003 server, all of which work fine with OMQ 4.3/4.4u1. When I change the PATH to point from 4.5.1 libs to 4.4u1 libs, the app works again.
Further, when I point Dependency Walker to the 4.5.1 MQCRT1.DLL, it also complains that it cannot find MSVCR90.DLL. However when I open up MQCRT1.DLL from 4.4 and 4.3, it resolves the same DLL just fine. This comparison should be easily reproducible in your own tests.
Since MSVCR90.DLL is the C runtime from VS 2008, and we've installed the latest SP1 copy of vcredist_x86.exe which is the official and recommended method for redistributing that particular runtime library, I have to assume that the 4.5.1 C API is broken. Perhaps it was been built incorrectly, or against some strange version of MSVCR90.DLL that isn't widely available, or with a corrupted manifest that is pointing to a non-existent version of MSVCR90.DLL. Thankfully VS 2010 eliminates the manifest requirements and allows you to just drop MSVC runtime DLLs in application folders like the old days, but unfortunately VS 2008 requires the manifest and SxS registry approach (taking us from DLL Hell to Manifest Hell). It would be nice if OMQ could be built against VS 2010, or better yet, statically linked with the VS 2010 C runtime so as to eliminate dependance on external runtime libs.
As a temporary workaround, I've discovered that if I replace the 4.5.1 MQCRT1.DLL with the one from 4.4u1, it works and seems to successfully work against a running 4.5.1 broker. Not sure if this is recommended or supported though.