If you have multiple links against static OpenMP library, you can expect difficulty. You should see the run-time error about multiple instances of OpenMP. Defaults are set such that this shouldn't happen by accident. Static linking would inflate the size of the .dll and might lead to run-time issues with MKL load time or memory consumption.
For both A.dll and B.dll we statically linked with
Then in our application, we first use A.dll to perform some mkl operations. Later we use B.dll to use mkl functionality again.
In some cases, in using B.dll, we get a dll initialization exception. restarting application (without using the part that will load A.dll) resolved the problem. That makes me thinking there are some MKL initialization which can only be executed once in the same application.
I resolved it by making both A.dll and B.dll using SDL (mkl_rt.dll).