Showing results for 
Search instead for 
Did you mean: 

libguide needed with openMP turned off, is that normal?

Hi all,

I am writing some plug-ins that I compile with Intel C++ compiler (10.0 for Windows), it came out that the host for which these plug-ins are written is using MKL and therefore a certain libguide40.dll.
I understand that I should make sure that the host and my dlls use the same libguide but unfortunately this is not possible so I would like to simply not use libguide when building my plug-ins. I didn't find a way of doing this, appart from turning the optimization down to O1.
I am using the Intel compiler inside Visual Studio, and the OpenMP support is turned off, but when excluding libguide.lib and libguide40.lib from the linking, with an optimization greater than O1, I get some link errors.

Do you have any idea of why (is libguide needed by operations other than openMP?), and if so, do you know an other way of not needing the libguide libraries?

I am really sorry if this question has already been answered but I didn't find it anywhere on this forum or on the web. I've seen a lot of related issues though, and the answers helped me to work out a lot of what was happening to me but I am still confused on a few things. So if you can help... thanks!

have a great day

0 Kudos
1 Reply
Black Belt

MKL with the thread interface requires the OpenMP library (libguide in older versions). I don't know why -O1 could make a difference (unless you enabled /Qparallel). As you say, if you use OpenMP in your own code, you must use the same OpenMP library for that and for MKL (libiomp, not libguide, to support Microsoft openmp). If you don't want to link with OpenMP library, you must link the MKL sequential libraries (serial, in older versions), as well as turning off OpenMP and parallel in VS setting.
It might be worth while to upgrade to a recent ICL which includes MKL. This avoids many of the problems about mixing various library versions.