Search code examples
c++dllcompilationintel-ipp

If I ship a DLL that use IPP library, should I also ship IPP DLLs?


I was reading this interesting article about IPP Dispatcher. At some point, it's written: Dispatching refers to the process of detecting CPU features at run-time and then selecting the Intel IPP optimized library set that corresponds to your CPU. For example, in the \ia32\ipp directory, the ippip8.dll library file contains the 32-bit optimized image processing libraries for processors with Intel® SSE4.2; ‘ippi’ refers to the image processing library, ‘p8’ refers to 32-bit SSE4.2 architecture.

Does it mean that if I release a DLL using ipp.h, when I ship to customers, they also need the DLLs version of the IPP Library? Or are they automatically compiled and linked with the .libs in the final build?

I don't get that DLL example on the document.


Solution

  • You don't have to ship all of them, there is an automatic dispatch that is done at runtime. If a library is "missing", then the runtime will choose the lower compatible runtime (so you should at least have the SSE2 runtime).