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

Linker error visual studio 2010 ippsexp_32f

Mark_Finlay
Beginner
879 Views

I get the following linker errors (VS 2010) for the functions ippsln_32f and ippsexp_32f using the static, single-threaded (ipps_l.lib) Ipp 7.1.1 libraries:

(psexp32f_m7---ippsExp_32f_I.obj) : error LNK2019: unresolved external symbol m7_ippsExp_32f_A21 referenced in function m7_ippsExp_32f_I
(psexp32f_m7---ippsExp_32f.obj) : error LNK2001: unresolved external symbol m7_ippsExp_32f_A21
(psexp32f_n8---ippsExp_32f_I.obj) : error LNK2019: unresolved external symbol n8_ippsExp_32f_A21 referenced in function n8_ippsExp_32f_I
(psexp32f_y8---ippsExp_32f_I.obj) : error LNK2019: unresolved external symbol y8_ippsExp_32f_A21 referenced in function y8_ippsExp_32f_I
(psexp32f_y8---ippsExp_32f.obj) : error LNK2001: unresolved external symbol y8_ippsExp_32f_A21
(psexp32f_e9---ippsExp_32f_I.obj) : error LNK2019: unresolved external symbol e9_ippsExp_32f_A21 referenced in function e9_ippsExp_32f_I
(psexp32f_e9---ippsExp_32f.obj) : error LNK2001: unresolved external symbol e9_ippsExp_32f_A21
(psexp32f_l9---ippsExp_32f_I.obj) : error LNK2019: unresolved external symbol l9_ippsExp_32f_A21 referenced in function l9_ippsExp_32f_I
(psexp32f_l9---ippsExp_32f.obj) : error LNK2001: unresolved external symbol l9_ippsExp_32f_A21
(psexp32f_u8---ippsExp_32f.obj) : error LNK2019: unresolved external symbol u8_ippsExp_32f_A21 referenced in function u8_ippsExp_32f

The same errors appear for ippsln_32f

This worked fine with ipp 7.0.  Is this a known issue or is there a work around to this problem?

0 Kudos
5 Replies
SergeyKostrov
Valued Contributor II
879 Views
>>...using the static, single-threaded (ipps_l.lib) Ipp 7.1.1 libraries... It looks similar to: Forum topic: Static Linking Error - ippcore-7.1 Dependency Web-link: http://software.intel.com/en-us/forums/topic/328164 and please take a look.
0 Kudos
Mark_Finlay
Beginner
879 Views

I believe it is related - but doesn't appear to be quite the same thing.  We are not using the Intel compiler (as the poster is) - just the VS 2010 compiler with the single-threaded static IPP libraries.  However, the dependency is still there for those 2 functions (ippsln_32f, ippsexp_32f) - the static library does not contain their dependencies, hence you cannot link.  I believe this should be very easy to replicate (attempt to link any code referencing ippsln_32f using only the single-threaded static library (ipps_l.lib, ippcore_l.lib).  The problem is evident in both 32- and 64-bit builds.

Notably, linking to ipps.lib does not resolve the problem either, so I believe it something actually missing from ipps_l.lib.

0 Kudos
SergeyKostrov
Valued Contributor II
879 Views
>>...but doesn't appear to be quite the same thing. We are not using the Intel compiler (as the poster is) - just the VS 2010 >>compiler with the single-threaded static IPP libraries... Sorry for my wrong assumption.
0 Kudos
Jonathan_Chappelow
879 Views

Allow me to resurrect a dead thread for the benefit of future visitors with the exact same error.

I had similar undefined symbols related to ippsExp when using the ippi library (as it uses ipps internally).  The problem is resolved by also including the Vector Math (ippVM) library.  Apparently, these subroutines are in ippvm, so if you also #include ippvm.h and set your preprocessor directive appropriately (_IPP_PARALLEL_DYNAMIC, _IPP_PARALLEL_STATIC, or _IPP_SEQUENTIAL_STATIC), you will get the necessary library linked.

0 Kudos
Chao_Y_Intel
Moderator
879 Views

Thanks for sharing this,  Jonathan. 

0 Kudos
Reply