Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.

## Making DLL from ipp source

Beginner
170 Views
I've build ipp speech codec project, and everything is fine with it, but I don't know whether I can to make that project as dll. Is there any special properties that I have to change in my project to build dll? And another question is if I will run that dll on PC that doesn't have installed IPP software, would it work well , or there would be missing some libraries or so?
Thanks.
4 Replies
Employee
170 Views
DearTcorp,

If you build ipp speech codec project in Microsoft Visual studio, you can change the project's property by
Open project's property page =>Configuration Properties=>General=>Configuration Type => change the Static library (.*.lib) to dynamic library (*.dll).

But as i understand, the purposeyou change project to dll is to remove the IPP software dependency,thus you can run that dll on PC that haven't IPP software, right?If yes, thenthe change is not needed . Actually,IPP support 4 kind of link mode.

http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-intel-ipp...

No.2, 3, 4 guareetee one applicationrun other PCwithout IPP software installed.
among of the link mode, theNo.2 seems easiest.You can only change the project property by
Open project's property page =>Linker=>Input change ipps.lib ippsc.lib (dynamic)etc. to ipps_l.lib ippsc_l.lib.(static serial library), then produced exe don't depend on IPP software.

1. most ofspeech codec projectsproducestatic librarythemselves, where the IPP library is not needed during compile phase.
2. Only several application project produce exe, which need the static library and IPP library during compile phase. If IPP static libraryare linked during compile, then no IPP library neededduring run time.
So as you see, the key is in the phase of compile of the application project.

Best Regards,
Ying
Beginner
170 Views
Hi guys,
I'm trying to distribute a couple of my libraries which are using IPP to PCs that don't have IPP installed. For this I've decided to follow option 3 (custom made library) and everything works perfectly for Linux and MacOS but I'm having problems with Windows. I get the customdll files (myIPP_t.dll, myIPP_t.lib) from the ipp-samples example, but I can not link them into a testing program.

I have added the "__declspec(dllexport)" lines before those functions that I want to export and in my Windows7 (64bit) machine that has IPP installed everything runs well. I am using CMake to compile across all platforms, the only difference between UNIX and Windows CMakeLists.txt is that in the former I include the pthread library whereas in the later I don't. The problem comes when I try to run my testing code in a machine with Windows and NO IPP installed... I get several errors like:
error LNK2019: unresolved external symbol _ippsAdd_64f@16 referenced in function "void __cdec1 main(...
This happens in both the Visual Studio 2010 solution created by CMake and also when I run the compiler in a command line:
I am sure that the libraries are where they are supossed to be and that they are in the environmental variables but still it is like the the compiler is not finding the libraries, right? or maybe the libraries do NOT contain the IPP functions that I need... just can't figure out how windows work? Any ideas???
Boris
Employee
170 Views
Hi Boris,
Could you make sure you are exporting ippsAdd_64f function? Use dumpbin from VS2010 command line window. The "dumpbin /exports .lib" must show the list of exported functions. The sample's customdll shows
Exports
ordinal name
_ippGetStatusString@4
_ippiGetLibVersion@0
_ippiGetSpatialMoment_64f@28
_ippiMomentFree_64f@4
_ippiMomentInitAlloc_64f@8
_ippiMoments64f_32f_C1R@20
_ippsFree@4
_ippsGetLibVersion@0
_ippsMalloc_32f@4
_ippsSum_32f@16
_ippsThreshold_32f_I@16
among with other names.
Regards,
Sergey
Beginner
170 Views
Dear Sergey,
first sorry for not replying before... I did the "dumpbin /EXPORTS myIPP.lib" and I get something similar to what you wrote in your message:
File Type: LIBRARY
Exports
ordinal name
ippGetCpuClocks
ippGetCpuFreqMhz
ippGetStatusString
ippStaticInit
ippiConvValid_32f_C1R
ippiCopyConstBorder_32f_C1R
ippiCopyWrapBorder_32f_C1R
ippiCopy_32f_C1R
ippiGetLibVersion
ippiTranspose_32f_C1R
C6 .debug$S 14 .idata$2
14 .idata$3 8 .idata$4
8 .idata$5 E .idata$6