Static linking

Static linking

Again I am facing the same problem I had with OpenMP libarry -- after compiler upgrade (Package ID: w_ccompxe_2013.3.171 w_ccompxe_p_13.1.1.171), even though multi-threaded static IPP libraries are rinstalled on my system I am getting "missing ippcore-7.1.dl" error when I launch compiled application.

1. Haven't I already told Intel compiler engineers how wrong is to break things silently and postpone such problems to application run-time?

2. Haven't I already voiced my protest for removing static OpenMP library?

3. Why do you insist on removing our choice to produce STATICALLY LINKED SINGLE EXECUTABLE and why are you forcing us to deal with DLL hell???

The biggest WTF however is why I can even select a build option which doesn't work?!?

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

>>...even though multi-threaded static IPP libraries are rinstalled on my system I am getting "missing ippcore-7.1.dl" error
>>when I launch compiled application.


A couple of weeks ago we resolved a similar problem with a developer who is using IPP library. The user finally confirmed that it was some problem on his side with Visual Studio project settings and I'll find that thread for you.

Here it is and please take a look:

Forum Topic: Static Linking Error - ippcore-7.1 Dependency

Hello Sergey,

In my case this is Visual Studio 2012 Update 2 with mentioned compiler version.

If I disable use of "Use Intel Optimized Headers" then IPP static linking works -- definitely there is a problem with those headers (ippvalarray.h, valarray.h).

I can only guess that since ippvalarray.h includes ipp.h, it does not see /D _IPP_PARALLEL_STATIC defined for some reason. It is either misconfigured file or a compiler bug.

Igor Levicki

>>... it does not see /D _IPP_PARALLEL_STATIC defined for some reason...

Coud you try to undefine the following macros?


>>...definitely there is a problem with those headers ( ippvalarray.h, valarray.h ).

I've looked at these two header files and I didn't see anything that could break static linking. However, I would try to add

#pragma message ( "*** ... Text of Message ... ***" )

directive in the most important IPP headers in order to see which macros are actually defined. Here are two helper macros I often use for diagnostics:

// Helper Macros to Display a text in a #pragma message directive

#define _VALUE2( value ) #value
#define _VALUE( value ) _VALUE2( value )

Usage is as follows:

#pragma message ( "# Diagnostics: Environment CODE: " _VALUE( _ENVIRONMENT_CODE ) )

Where _ENVIRONMENT_CODE is some macro.

This is a short follow up. Hi Igor, did you resolve the problem?

No, I did not.

I have upgraded to Composer 2013 Update 4 only to confirm that I still have the same issue as with Update 3. I am working with some Intel engineers on this, will let you know once the results are in.

Igor Levicki

Leave a Comment

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