Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

ippm.h cannot include ippm.lib

Niall_Q_
Beginner
611 Views

I have installed Composer XE 2015 (version 2015.6.285) on a new computer and have a rather interesting problem. The code that I am trying to build compiles OK on another computer. I know that the version of Composer is old, but it is building some legacy code.

This new computer has Visual Studio 2010 SP1 installed and this is being used to build a DLL that include IPP. The stdafx.h file that is included as a header file includes the following two lines.

#include <ipp.h>
#include <ippm.h>

When the code is compiled, the following error is reported for the first file that includes stdafx.h.

LINK : fatal error LNK1104: cannot open file 'C:\Program Files (x86)\Intel\Composer XE 2015\ipp\include\ippm.h/../../lib/intel64/ippmmt.lib'

What I can see is that ippm.h includes the following code. Note that it is the third line that is causing the problem.

#if !defined( _IPP_NO_DEFAULT_LIB )
  #if defined( _IPP_SEQUENTIAL_DYNAMIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippm" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippcore" )
  #elif defined( _IPP_SEQUENTIAL_STATIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippimt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippsmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippvmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "ippcoremt" )
  #elif defined( _IPP_PARALLEL_DYNAMIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippm" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippcore" )
  #elif defined( _IPP_PARALLEL_STATIC )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippimt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippsmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippvmmt" )
    #pragma comment( lib, __FILE__ "/../../lib/" _INTEL_PLATFORM "threaded/ippcoremt" )
  #endif
#endif

The project's properties have $(IPPIncludeDir) in the include directories path. I can see that ippm.h is located in C:\Program Files (x86)\Intel\Composer XE 2015\ipp\include and ippm.lib is in C:\Program Files (x86)\Intel\Composer XE 2015\ipp\lib\intel64. I cannot see how this code can work as the library is relative located to the include file by \..\lib\intel64\ rather than \..\..\lib\

What I do not understand is that the same code and project are used on the computer that builds it correctly and the one that does not. They both have had Composer XE 2015 installed. Can anyone shed light on what needs to be done to get this to build correctly?

0 Kudos
1 Reply
Ruqiu_C_Intel
Moderator
611 Views

Hi Niall Q,

You mentioned that the same code and project are used on the  different computers, one builds the project correctly, while the other one does not. And both the computers installed Composer XE 2015 (version 2015.6.285). And said the new computer has Visual Studio 2010 SP1 installed and this is being used to build a DLL that include IPP. 

So, what' the version that old computer installed? VS 20##? Except the composer XE2015 and code is same, what's the difference for the two computers?

Have you checked all the configuration one by one in the VS to make the two projects are totally same? And have you tested other project which integrated IPP in the new computer?

 

Best Regards,

Ruqiu

 

0 Kudos
Reply