Building a Windows* Application Using Intel® IPP

Steps to build a windows application using Intel IPP


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 Description Header Files Dynamic Linking Static Linking with Dispatching &
Custom Dynamic Linking
Static Linking without Dispatching
Audio Coding: MP3, AAC, AC3 ippac.h ippac.lib ippacemerged.lib ippacmerged.lib
Color Conversion: Convert to/from RGB, CMYK,YUV, YCbCr, YCCK, photo YCC, XYZ, HLS, HSV, LUV ippcc.h ippcc.lib ippccemerged.lib ippccmerged.lib
String:Text handling, matching, parsing, searching, formatting ippch.h ippch.lib ippchemerged.lib ippchmerged.lib
Common Functions: GetCpuClocks, GetCpuFreqMhz, Malloc and Free ippcore.h ippcore.lib ippcorel.lib ippcorel.lib
Cryptography: Hash algorithms, data authentication, symmetric and public key cryptography ippcp.h ippcp.lib ippcpemerged.lib ippcpmerged.lib
Computer Vision: Sobel filtering, feature detection, distance transform, flood fill, motion analysis, pyramid functions, pattern recognition, camera calibration, 3D reconstruction ippcv.h ippcv.lib ippcvemerged.lib ippcvmerged.lib
Data Compression: LZ77, CRC32, Adler algorithms, zlib Huffman coding, Burrow-Wheeler Transform, Lempel-Ziv-Storer-Szymanski algorithm ippdc.h ippdc.lib ippdcemerged.lib ippdcmerged.lib
Image Processing: Linear and geometric transforms, filters, erosion, dilation, statistics, arithmetic ippi.h ippi.lib ippiemerged.lib ippimerged.lib
JPEG: Image compression for JPEG and JPEG2000 ippj.h ippj.lib ippjemerged.lib ippjmerged.lib
Realistic Rendering ippr.h ippr.lib ippremerged.lib ipprmerged.lib
Small Matrix: Vector and martrix algebra, arithmetic, linear system solution and least squares problem ippm.h ippm.lib ippmemerged.lib ippmmerged.lib
Signal Processing: Filters, transforms, windowing, signal generation, statistics, data manipulation ipps.h ipps.lib ippsemerged.lib ippsmerged.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/AMR ippsc.h ippsc.lib ippscemerged.lib ippscmerged.lib
Speech Recognition: Feature processing, model estimation, voice activity detection, polyphase resampling, Advanced Aurora, noise reduction, acoustic echo cancellation ippsr.h ippsr.lib ippsremerged.lib ippsrmerged.lib
Video Coding: DV, H.261, H.263, MPEG-2, MPEG-4, H.264 ippvc.h ippvc.lib ippvcemerged.lib ippvcmerged.lib
Vector Math: Fixed-accuracy basic arithmetic, power, root, exponential, logarithmic, trigonometric and hyperbolic operations ippvm.h ippvm.lib ippvmemerged.lib ippvmmerged.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

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.