Statically linking MKL libary and IPP library in same project

Statically linking MKL libary and IPP library in same project


I am developing an application which uses both IPP and MKL. Till now i was using MKL ( mkl_rt.lib)and IPP (ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib) for developing appliation. Now I have to move to static linking of the project as per document (  Page 29) i am using  IA-32 architecture, static linking :: mkl_intel_c.lib mkl_intel_ thread.lib mkl_core.lib libiomp5md.lib (for MKL.)

IPP : ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib

If I try to build this project then i get >65K  redifition  warnings and the build fails. Kindly let me know 

how to build the a project with both IPP and MKL staticatlly linked and used?








13 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

libiomp5md.lib is a dynamic library; there is no static counterpart in the latest releases, so that's normal, and probably advisable when using MKL and IPP together.
If your application is too large for static linking on 32-bit architecture, you may have to revise your constraints.

Which version of MKL and IPP you are using? some versions ago, MKL reused some of IPP functions internally. you can try to evaluate the latest versions where such problems were resolved.


We are using

IPP version: 7.0 update 6
MKL 10.3 update 11.

In our application project we are using both IPP and MKL. We would like to statically include both of them.

Kindly let us know is there any documentation to use it.
We are using folllowing IPP libarary

IPP : ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib

folllowing MKL

Our apllication uses

matrix and vector operation from MKL

Signal processing function from IPP.

Let us know whihc version of IPP and mkl shall be used.


I am not aware that you use IPP 7.0 because of you point ipp*merged.libs which has been renamed and redesigned in 7.0.
these names were used in 6.1 version the last time.

Correcting the names

ipps_l.lib ippcore_l.lib ippvm_l.lib

these are from the ippsremerged.lib ippsrmerged.lib 6.1 as the SR lib are discontinued in 6.1.

So we have been using it from previous release.

Are their any updates on this issue? I am following this because I have a similar issue with statically linking both IPP (7.1) and MKL (11.0). Everything worked until I began calls to ippsFIR_32f, and then I started getting link errors, e.g.

ipps_l.lib(pscopye9as_e9.obj) : error LNK2005: e9_ownsSet_32s_E9 already defined in mkl_core.lib(pscopye9as_20101122.obj)

There are 2 threads on this forum already about static linking problems, and I would like to know if there is progress before starting a third.

Hi gregannarbor,

MKL internally used a few IPP functions, and added a few IPP symbols into the MKL libraries. The possible workaround is to link one of libraries (IPP or MKL) with dynamic libs or customer DLLs. The internal symbols is not expected to expose with dynamic libraries. would you like to try build one custom dll based on the mkl function you are using.
The tools for build MKL custom dll, which is avaiable in MKL install directory for example, C:\Program Files (x86)\Intel\Composer XE 2013\mkl\tools\builder.

Best Regards,

I am in a similar situation (statically linking MKL and IPP), and do not want to distribute our libraries with dynamic libs. I sincerely hope Intel recognizes this as an issue and is working to address it quickly.

the issue is esclated. here is the number DPD200304564 for your reference. we will let all of you know when the problem would be updated.

HI any updat on this issue ( DPD200304564 ). Any likely  updated release date.



Hi, there are no updates at this moment. sorry about that. Gennady


as a temporarily workaround for windows, can you try to change the order of libraries while linkig: ipp's then mkl's. it works on my side. Pls see the results for 32 and 64 bit cases 

IA32, windows
ippcore_l.lib;ippi_l.lib;ipps_l.lib; mkl_intel_c.lib;mkl_intel_thread.lib;mkl_core.lib;libiomp5md.lib;%(AdditionalDependencies)

Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Intel64, windows
the link line:
ipps_l.lib;ippi_l.lib;ippcore_l.lib; mkl_intel_lp64.lib;mkl_intel_thread.lib;mkl_core.lib; libiomp5md.lib

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Leave a Comment

Please sign in to add a comment. Not a member? Join today