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

ipp_get_cache_line_size already defined in ippicvmt.lib

John_W_4
Beginner
577 Views

Greetings, I'm currently trying to upgrade a Image Processing program from IPP7 to 9, OpenCV2.4 to 3.1 as well as converting it to static linking instead of dynamic. The progress was successful in dynamic linking, but a nightmare in static.

Long story short, 2 errors came out and I have no idea how to fix it due to it belongs to the IPP libraries:

  1.  ipp_get_cache_line_size already defined in ippicvmt.lib(ippcachesize.obj)  
  2.  ipp_get_cpuid already defined in ippicvmt.lib(owncpudefs.obj) 

Both of em are in conflict with the ippcoremt.lib under the same obj name, I've made a few attempt to fix the errors, such as attached ippi.lib (which is wrong, it should be ippimt.lib but same error yet occurs) that somehow eliminates the error but causes the program to be dependant on ipp DLLs (which still somehow crashes eventhough I moved the DLLs to the source directory).

The Dependencies I've attached is as below:

  1. libiomp5md.lib
  2. version.lib
  3. libtiff.lib
  4. libpng.lib
  5. libjasper.lib
  6. libjpeg.lib
  7. libwebp.lib
  8. zlib.lib
  9. IlmImf.lib
  10. opencv_world310.lib
  11. ippicvmt.lib

I've been stucking on these errors for days, mind helping me out? :'(

(Pardon my English)

 

 

0 Kudos
1 Solution
Pavel_V_Intel
Employee
577 Views

Hi John,

OpenCV3 has special IPP subset inside and looks like it conflicts with general IPP package. We will try to fix this problem in future, but for now I have one suggestion:

Build OpenCV with regular IPP package by defining IPPROOT variable in CMake to point to your package location (CMake log will have entry: "found IPP: x.x.x [x.x.x]"). This will switch OpenCV to regular IPP and you will be able to remove ippicvmt.lib from the linker and replace all dependencies with ippcore, ippi, ipps, ippcv, ippcc and ippvm libs from the regular IPP package

View solution in original post

0 Kudos
3 Replies
Zhen_Z_Intel
Employee
577 Views

Hi John,

I am afraid there's no lib called ippicvmt.lib in IPP. You should link with ippimt.lib & ippcvmt.lib.

Best regards,
Fiona

0 Kudos
Pavel_V_Intel
Employee
578 Views

Hi John,

OpenCV3 has special IPP subset inside and looks like it conflicts with general IPP package. We will try to fix this problem in future, but for now I have one suggestion:

Build OpenCV with regular IPP package by defining IPPROOT variable in CMake to point to your package location (CMake log will have entry: "found IPP: x.x.x [x.x.x]"). This will switch OpenCV to regular IPP and you will be able to remove ippicvmt.lib from the linker and replace all dependencies with ippcore, ippi, ipps, ippcv, ippcc and ippvm libs from the regular IPP package

0 Kudos
John_W_4
Beginner
577 Views

Pavel V.Vlasov (Intel) wrote:

Hi John,

OpenCV3 has special IPP subset inside and looks like it conflicts with general IPP package. We will try to fix this problem in future, but for now I have one suggestion:

Build OpenCV with regular IPP package by defining IPPROOT variable in CMake to point to your package location (CMake log will have entry: "found IPP: x.x.x [x.x.x]"). This will switch OpenCV to regular IPP and you will be able to remove ippicvmt.lib from the linker and replace all dependencies with ippcore, ippi, ipps, ippcv, ippcc and ippvm libs from the regular IPP package

Hi there,

Well that's indeed unfortunate. Thanks for your suggestion, I'll give it a try and update you as soon as I can. :D

 

Update:

Your suggestion works great, thank you very much. :)

0 Kudos
Reply