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

Visual Studio 2008 Linking error in IPP 7.1

Amol_A_
Beginner
909 Views

We are getting below linking errors in my application which uses audio-video-codecs libraries of IPP Samples of version 7.1.1.013 and Core IPP Libraries of version 7.1.1.119_intel64 on Windows Server 2008 64 bit machine.

1>ipps_l.lib(psexp32f_m7---ippsExp_32f_I.obj) : error LNK2001: unresolved external symbol m7_ippsExp_32f_A21
1>ipps_l.lib(psexp32f_n8---ippsExp_32f_I.obj) : error LNK2001: unresolved external symbol n8_ippsExp_32f_A21
1>ipps_l.lib(psexp32f_y8---ippsExp_32f_I.obj) : error LNK2001: unresolved external symbol y8_ippsExp_32f_A21
1>ipps_l.lib(psexp32f_e9---ippsExp_32f_I.obj) : error LNK2001: unresolved external symbol e9_ippsExp_32f_A21
1>ipps_l.lib(psexp32f_l9---ippsExp_32f_I.obj) : error LNK2001: unresolved external symbol l9_ippsExp_32f_A21
1>ipps_l.lib(psln_m7---ippsLn_32f_I.obj) : error LNK2001: unresolved external symbol m7_ippsLn_32f_A21
1>ipps_l.lib(psln_n8---ippsLn_32f_I.obj) : error LNK2001: unresolved external symbol n8_ippsLn_32f_A21
1>ipps_l.lib(psln_y8---ippsLn_32f_I.obj) : error LNK2001: unresolved external symbol y8_ippsLn_32f_A21
1>ipps_l.lib(psln_e9---ippsLn_32f_I.obj) : error LNK2001: unresolved external symbol e9_ippsLn_32f_A21
1>ipps_l.lib(psln_l9---ippsLn_32f_I.obj) : error LNK2001: unresolved external symbol l9_ippsLn_32f_A21

Please provide your valuable suggestions.

Regards

Amol Agarwal

0 Kudos
14 Replies
Chuck_De_Sylva
Beginner
909 Views

Amol,

Can you list out your linker settings? Are you building this using the Perl command line script?

- Chuck

0 Kudos
Amol_A_
Beginner
909 Views

Hi Chuck,

Thanks for your quick reply.

We successfully build the complete solution of audio-video-codecs using perl command script.

We are able to build again successfully all the IPP sample libraries with macro _IPP_PARALLEL_STATIC and Runtime Library : Multi-threaded DLL using Microsoft Visual Studio 2008. But we are getting above mentioned linking errors when we link these rebuild libraries with our application.

The linker settings we use are attached.

Please inform if you want more information.

Regards

Amol

0 Kudos
manca1
Beginner
909 Views

Have you downloaded the threaded libraries from the website? They are separate download in IPP v7.1.

0 Kudos
Amol_A_
Beginner
909 Views

Hi Manca1,

Yes I have already downloaded these libraies and currently using them. But these linking errors still came during building my project.

0 Kudos
manca1
Beginner
909 Views

You're definitely not linking all the necessary libs. Try adding this in your "Additional library folders" in linker: C:\Program Files (x86)\Intel\Composer XE 2013\ipp\lib\intel64, as well as: C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\intel64. It should have all the necessary libs with these two folders there.

0 Kudos
Sergey_K_Intel
Employee
909 Views

Hi Amol,

Try to add ippvm_l.lib library to the list of libraries in the project. The unresolved references are there.

Regards,
Sergey 

0 Kudos
Amol_A_
Beginner
909 Views

Hi Manca1,

We are alreadylinking with all the IPP core libraries and compiler libraries but the errors are still present.

Regards

Amol

0 Kudos
Amol_A_
Beginner
909 Views

Hi Sergey,

We are already using ippvm_l.lib.

One thing more i want to mention for this error is that this error occured due to mp3_enc.lib which uses ipps_l.lib or ipps_t.lib. When we remove the dependecy of mp3_enc from our application we are able to build our application successfully.

Please suggest the possible reasons for this error.

Regards

Amol

0 Kudos
Sergey_K_Intel
Employee
909 Views

Hi Amol,

It's hard to believe, because IPPS (ipps_l/ipps_t) is one of the most used libs (second after ippcore), in UMC all local libraries/applications depend on IPPS. So, the problem must be "out there". Could you show linker command line (the one shown in project properties/link/command_line) ?

Regards,
Sergey 

0 Kudos
Amol_A_
Beginner
909 Views

Hi Sergey,

Thanks for your support and sorry for the late reply.

Please find below the Linker command line Settings :

/OUT:"E:\Share\Writable\Dump\ProtocolExchangeSrv\ProtExSrv\x64\Release\Transcoder.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"E:\Share\Writable\Dump\ProtocolExchangeSrv\ProtExSrv\x64\Release" /LIBPATH:"..\lib" /LIBPATH:"..\lib\ippcore" /DLL /MANIFEST /MANIFESTFILE:"x64\Release\Transcoder.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"E:\Share\Writable\Dump\ProtocolExchangeSrv\ProtExSrv\x64\Release\Transcoder.pdb" /MAP /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:PROMPT core_umc.lib JitterBuffer.lib BufferPool.lib Debugsupport.lib M2AVEncMux.lib MPEG4Decoder.lib StreamWrt.lib StreamRdr.lib mclib.lib mcm2vbase.lib mcm2vencoder.lib vm.lib vm_plus.lib umc_io.lib mpeg2_mux.lib ws2_32.lib mpeg4_dec.lib mpeg2_dec.lib pdh.lib media_buffers.lib winmm.lib h264_dec.lib mpeg2_spl.lib mjpeg_dec.lib common_cc.lib codec_common.lib container_common.lib mp3_common.lib io_umc.lib Setupapi.lib mp3_enc.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

Kindly let me know if more information is required.

Regards

Amol

0 Kudos
Chuck_De_Sylva
Beginner
909 Views

Amol,

Have you tried adding the ipp libraries explicitly in the Additional Dependencies linker option, instead of just adding the path?

- Chuck

0 Kudos
Sergey_K_Intel
Employee
909 Views

Hi Chuck,

Looks like IPP libraries are linked via "#pragma comment" directives in IPP .h files.

Hi Amol, how do you know that you link ippVM library? Just in case try to add ippvm_t.lib to the "input" list of linker properties in your project. Or, ippvm.lib if you use dynamic IPP linking. This is only experiment :)

Regards,
Sergey 

0 Kudos
Amol_A_
Beginner
909 Views

Hi Sergey,

Thanks for your reply.

We are just trying to link with other libraries to resolve this linking errors thats why we use ippvm_t.lib.

We added ippvm_t.lib as we use static linking but the problem is still exist. 

Regards

Amol

0 Kudos
Sergey_K_Intel
Employee
909 Views

Hi Amol,

Look below. This is output from dumpbin. The first is search for ippsLn in ipps_l.lib. Second is search for the same in ippvm_t.lib. You can see that in ipps_l.lib there are external links to undefined ippsLn symbols. In ippvm_t.lib you can see the same links from some module(s) and in the bottom there are external definitions of that symbols. That means, that required symbols are defined in ippvm_t.lib.

C:\TEMP>dumpbin /symbols ipps_l.lib | find "ippsLn_32f_A21"
003 00000000 UNDEF notype () External | m7_ippsLn_32f_A21
003 00000000 UNDEF notype () External | u8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | l9_ippsLn_32f_A21
003 00000000 UNDEF notype () External | m7_ippsLn_32f_A21
003 00000000 UNDEF notype () External | y8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | n8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | y8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | u8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | n8_ippsLn_32f_A21
003 00000000 UNDEF notype () External | l9_ippsLn_32f_A21
003 00000000 UNDEF notype () External | e9_ippsLn_32f_A21
003 00000000 UNDEF notype () External | e9_ippsLn_32f_A21

C:\TEMP>dumpbin /symbols ippvm_t.lib | find "ippsLn_32f_A21"
002 00000000 SECT1 notype External | ippsLn_32f_A21_arraddr
003 00000000 UNDEF notype External | m7_ippsLn_32f_A21
004 00000000 UNDEF notype External | u8_ippsLn_32f_A21
005 00000000 UNDEF notype External | n8_ippsLn_32f_A21
006 00000000 UNDEF notype External | y8_ippsLn_32f_A21
007 00000000 UNDEF notype External | e9_ippsLn_32f_A21
008 00000000 UNDEF notype External | l9_ippsLn_32f_A21
009 00000000 UNDEF notype External | ippsLn_32f_A21_arraddr
00A 00000000 SECT1 notype () External | ippsLn_32f_A21
002 00000000 SECT1 notype () External | e9_ippsLn_32f_A21
002 00000000 SECT1 notype () External | u8_ippsLn_32f_A21
002 00000000 SECT1 notype () External | n8_ippsLn_32f_A21
002 00000000 SECT1 notype () External | m7_ippsLn_32f_A21
002 00000000 SECT1 notype () External | l9_ippsLn_32f_A21
002 00000000 SECT1 notype () External | y8_ippsLn_32f_A21

Check your command lines.

Regards,
Sergey 

0 Kudos
Reply