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.

Note: imq*23vn.dll and imq*23vnvs2012.dll are typically same except for its name.

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 (\bin\vs2005) and need not compile your application. Hence you don’t need a imq*23vn.lib built with VS2005 to be shipped with MQ v8 and hence only 2 sets of libs.

To build application with VS 2012 you could use \bin\imq*23vnvs2012.dll ( or ) \bin\imq*23vn.dll and link with libraries from \Tools\Lib\imq*23vn.lib or \Tools\Lib\imq*23vnvs2012.lib


Join The Discussion

Your email address will not be published.