Building a Windows* Application Using Intel® IPP

Steps to build a windows application using Intel IPP

Note : This article is for Intel® IPP older than version 7.0

for newer versions please check

Setting Environment Variables

The batch files ippenv.bat and ippenv64.bat in the tools/env directory sets Intel® IPP LIB, INCLUDE, and PATH environment variables for a command prompt session. In order to set the environment variables outside of a single command prompt session, please complete the following steps in Windows XP*:

  1. Right-click on the My Computer icon located on your desktop or from Windows Explorer =>Select the Advanced tab=> Select the Environment Variables button.
  2. Use the interface to set the environment variables for only the current user (top dialog box) or for anyone who uses the system (bottom dialog box).
  3. Select the variable you wish to modify and click the Edit button.
  4. Add the path to related Intel IPP files to the existing list:
    1. For example, select INCLUDE and then type in the directory for the Intel IPP header files (e.g. default: C:\Program Files\Intel\IPP\X.X\ia32\include).
    2. For example, select LIB and then type in the directory for the Intel IPP stub libraries (e.g. default: C:\Program Files\Intel\IPP\X.X\ia32\stublib or C:\Program Files (x86)\Intel\ComposerXE-2011\ipp\lib\ia32 ).
    3. For example, select PATH and then type in the directory for the Intel IPP binaries (e.g. default: C:\Program Files\Intel\IPP\X.X\ia32\bin or C:\Program Files (x86)\Intel\ComposerXE-2011\redist\ia32\ipp).
    4. For example, add variable IPPROOT and type "C:\Program Files\Intel\IPP"
  5. Click OK in the Edit User Variable dialog box.
  6. Click OK in the Environment Variables dialog box.
  7. Click OK in the Systems Properties dialog box.

Please notes: the IPP directory structure and library name changed in 7.0 and later.  The method describes in the article should be still effective, but you may change the directory or library name correspondingly. Please refer to the article New Directory Structure and Library Naming in IPP  and IPP 7.0 - Selecting the Intel® IPP Libraries Needed by Your Application

Header Files, Dynamic and Static Libraries

The Intel IPP supports four different linking models for each functional group/domain of the library. The libraries used for each model are listed in the table below.

Domain DescriptionHeader FilesDynamic LinkingStatic Linking with Dispatching &
Custom Dynamic Linking
Static Linking without Dispatching
Audio Coding: MP3, AAC, AC3ippac.hippac.libippacemerged.libippacmerged.lib
Color Conversion: Convert to/from RGB, CMYK,YUV, YCbCr, YCCK, photo YCC, XYZ, HLS, HSV, LUVippcc.hippcc.libippccemerged.libippccmerged.lib
String:Text handling, matching, parsing, searching, formattingippch.hippch.libippchemerged.libippchmerged.lib
Common Functions: GetCpuClocks, GetCpuFreqMhz, Malloc and Freeippcore.hippcore.libippcorel.libippcorel.lib
Cryptography: Hash algorithms, data authentication, symmetric and public key cryptographyippcp.hippcp.libippcpemerged.libippcpmerged.lib
Computer Vision: Sobel filtering, feature detection, distance transform, flood fill, motion analysis, pyramid functions, pattern recognition, camera calibration, 3D reconstructionippcv.hippcv.libippcvemerged.libippcvmerged.lib
Data Compression: LZ77, CRC32, Adler algorithms, zlib Huffman coding, Burrow-Wheeler Transform, Lempel-Ziv-Storer-Szymanski algorithmippdc.hippdc.libippdcemerged.libippdcmerged.lib
Image Processing: Linear and geometric transforms, filters, erosion, dilation, statistics, arithmeticippi.hippi.libippiemerged.libippimerged.lib
JPEG: Image compression for JPEG and JPEG2000ippj.hippj.libippjemerged.libippjmerged.lib
Realistic Renderingippr.hippr.libippremerged.libipprmerged.lib
Small Matrix: Vector and martrix algebra, arithmetic, linear system solution and least squares problemippm.hippm.libippmemerged.libippmmerged.lib
Signal Processing: Filters, transforms, windowing, signal generation, statistics, data manipulationipps.hipps.libippsemerged.libippsmerged.lib
Speech Coding: G.729, G.167 and G.168 echo cancellers, G.722.1, G.722, G.723.1, G.726, G.728, GSM/FR, GSM/AMR, WB GSM/AMRippsc.hippsc.libippscemerged.libippscmerged.lib
Speech Recognition: Feature processing, model estimation, voice activity detection, polyphase resampling, Advanced Aurora, noise reduction, acoustic echo cancellationippsr.hippsr.libippsremerged.libippsrmerged.lib
Video Coding: DV, H.261, H.263, MPEG-2, MPEG-4, H.264ippvc.hippvc.libippvcemerged.libippvcmerged.lib
Vector Math: Fixed-accuracy basic arithmetic, power, root, exponential, logarithmic, trigonometric and hyperbolic operationsippvm.hippvm.libippvmemerged.libippvmmerged.lib


Including Header Files

Intel IPP functions and types are defined in several header files organized by function group and are located in the \include directory. For example, the ipps.h file contains declarations for all signal processing functions. See the column "Header files" in the above table for additional information.

The file ipp.h includes all Intel IPP header files. For forward compatibility, include only ipp.h in your program.

Choosing Linked Libraries

There are several linkage models to choose from when using Intel® IPP functions in an application:

  • Dispatcher Libraries and Dynamic Linkage
  • Custom Dynamic Linkage
  • Static Linkage without Dispatching (Merged)
  • Static Linkage with Dispatching (E-Merged)


When making this decision, some things to consider are development and target environments, installation specifications, run-time conditions, and other application requirements. 

For choose simple linking strategy, please see simplified linking strategy

For more information, please read the document:Intel IPP Linkage Models - Quick Reference Guide

For more complete information about compiler optimizations, see our Optimization Notice.


Yolanda Maxwell's picture

These paths really need to be updated to to new file structure for IPP 7.1.

Tamer Assad's picture

Right Naveen, the installer registers PATH,LIB and INCLUDE environment variables, but not the IPPROOT, I assume intensifi has a point here.


Naveen Gv (Intel)'s picture

Yes, we are providing that option. While installing intel® software tools, you will get message as ‘Check this box to register PATH,LIB and INCLUDE environment variables with the path chosen for installation of IPP. If you choose not to register these variables, the file \tools\env\ippenv.bat in your chosen installation directory can be used to set the environment variables in a user shell”.

Naveen Gv

intensifi's picture

It would be nice if the installer provided an option to have the environment variables set at installation time.

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.