In this blog I want to clarify the confusion around the C++ libraries and dll’s shipped since MQ 8004. There had been queries around the MQ C++ imq*.dll’s as to why there are 3 sets of dll’s but only 2 sets of libraries and when to use which.
For IBM MQ Version 8.0, the queue manager and client libraries have been compiled with the Microsoft Visual Studio 2012 C/C++ compiler. This change meant that all MQ C++ application needs to be rebuild with MQ libraries.
In order to avoid rebuilding C++ application, from MQ 8002, IBM MQ provides C++ client libraries that are built with the Microsoft Visual Studio 2005 C++ compiler as well.
However with MQ 8002, two MQ C++ applications each of them compiled with 2005 and 2012 libraries cannot run simultaneously in the same box. Hence from MQ 8004, IBM MQ provides some additional C++ client libraries that are named differently. These differently named libraries (imq*vnvs2012.dll) are built with the Microsoft Visual Studio 2012 C++ compiler.
As you can see from the above table since MQ 8004, there are 3 sets of dll’s but only 2 sets of lib’s. There had been queries on why only 2 set of lib’s, if you wanted to refer to the dll built using vs2005 it means you have already compiled your application with imq*23vn.lib from previous MQ installs and now you don’t want to recompile your application. In this case you just have to point your application to use MQ C++ libraries built using Visual Studio 2005 (
To build application with VS 2012 you could use