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

IPP7.0 fails to build OpenCV2.2 with VisualStudio8.0

K_D
Beginner
906 Views
I have installed IPP, OpenCV2.2, built with CMake having altered theCMakeLists.txt as per Vladamir's forum post. When i compile with Visual Studio 2005, i get the errors:

Creating library ..\\..\\lib\\Release\\opencv_core220.lib and object ..\\..\\lib\\Release\\opencv_core220.expipps_l.lib(psbitrevw7as.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Creating library ..\\..\\lib\\Release\\opencv_imgproc220.lib and object ..\\..\\lib\\Release\\opencv_imgproc220.expippcore_l.lib(divdi3.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Creating library ..\\..\\lib\\Release\\opencv_objdetect220.lib and object ..\\..\\lib\\Release\\opencv_objdetect220.expippcv_l.lib(ipcvhaarw7t7.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Are the IPP v7.0 built with VisualStudio 2010? Should they becompatiblewithVisual Studio 2005?
0 Kudos
8 Replies
Vladimir_Dudnik
Employee
906 Views
Hello,

IPP always built with Intel C/C++ compiler, in particular IPP v7.0 was built with Intel Compiler v12.0.
Unfortunately I do not have that old MS compiler to check.

Is someone else experience similar issues when use IPP v7.0 with MSVC 2005?

Regards,
Vladimir
0 Kudos
PaulF_IntelCorp
Employee
906 Views
Note that even though the IPP libraries are built with the Intel compiler, the binaries are compatible with projects compiled and linked using the Microsoft Visual Studio tools. A significant percentage of IPP customers build their applications using either the Microsoft or GCC compilers.
0 Kudos
atvan
Beginner
906 Views
I use MSVC 2005.Everything compiles good before I update to IPP V7.0.
I'm able to compile simple player project in both release and release_ascii mode, but it fails in debug and debug_ascii mode.

1>------ Build started: Project: simple_player, Configuration: debug_ascii Win32 ------
1>Linking...
1>ippi_l.lib(piconvert01t7as.obj) : fatal error LNK1103: debugging information corrupt; recompile module
1>Build log was saved at "file://c:\CountersoftSVN\CS_AdvancedVideoSolutions\CS_CommonLibs\ipp-samples_7.0.1.046\audio-video-codecs\_bin\Win32\debug_ascii\simple_player\BuildLog.htm"
1>simple_player - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 34 up-to-date, 0 skipped ==========

I would appreciate if somebody can tell me why.
thx,
ezcom

0 Kudos
K_D
Beginner
906 Views
Bingo!
I would guess that since MSVC 2005 is an ancient compiler, the object code that it generates is not compatible with modern C++ standards-conformant compilers.
I am surprised that a MS compiler can actually usean Intel C++ compiler's output. Unless of course a 'C' interface is exported, which does have binary compatibility.
Can anyone explain this better?
/K
0 Kudos
Chao_Y_Intel
Moderator
906 Views

Hello,

I noticed a similar problem reported before, and the following KB fixed the problem ( after install the hot fix):

http://support.microsoft.com/kb/949009/en-us/


could you please check ifit works for you?

Thanks,
Chao

0 Kudos
atvan
Beginner
906 Views
Hey Chao,
It solves my problem.
I notice names of core libraries are changed in v7.0.Like for ippi, it used to be ippiemerged.lib and ippimerged.lib, now it is ippi_l.lib and ippi_t.lib.
In v6.1, I will have to link toippiemerged.lib and ippimerged.lib. But in v7.0, I don't have to (or I can't) include ippi_l.lib or ippi_t.lib. May I know why?
BTW, I noticed a new Preprocessor Definition _IPP_SEQUENTIAL_STATICin all simple_player projects. I can compile my project with or without this definition. May I know if there's any difference?
thx,
ezcom
0 Kudos
Vladimir_Dudnik
Employee
906 Views
Hello,

I'm not sure I get your point on this:
>>But in v7.0, I don't have to (or I can't) include ippi_l.lib or ippi_t.lib. May I know why?

It is up to you which IPP libraries to link with and I do not know why you can't link with either ippi_l.lib (which is single threaded static library) or ippi_t.lib (which is multithreaded static library. Who prevent you to link with these libs? It also possible to link with IPP DLLs import librraies, in your case it should be ippi.lib

The macro defintion _IPP_SEQUENTIAL_STATIC is introduced for integration with MS Visial Studio 2010 environment in Intel Parallel Studio. It is used to control which IPP libraries to link when you check appropriate box in Studio GUI project settings dialog. You may read more on that in IPP KB article - Use Intel IPP in Intel Parallel Studio
You are not required to define this manually.

Regards,
Vladimir
0 Kudos
PaulF_IntelCorp
Employee
906 Views
The IPP library is a C library, not a C++ library, so it does not suffer from any incompatible name-mangling issues. You can build your IPP application using either the Microsoft or the Intel compiler.

Regarding the new #pragma directives for Visual Studio 2010 integration (_IPP_SEQUENTIAL_STATIC, etc.), these will work with at least VS 2003 and later, perhaps even earlier versions of the Microsoft compiler. See the following article for more information about this #pragma:

http://msdn.microsoft.com/en-us/library/7f0aews7(v=vs.71).aspx

This method of specifying the names of library files to be included for linkis not unique to VS 2010. It is simply an alternative method for buildingthelink library list; you do need to include the appropriate ipp header (#include "ipph.h" is sufficient) and the compiler will automatically insert the names of the library files to be linked against your application -- based on the /D "string" you specify on the compiler command line.

The /D"string" specifies which of the three library models you wish to link against: dynamic, multi-threaded static or single-threaded static. The magic "string" keywords are:

_IPP_PARALLEL_DYNAMIC
_IPP_PARALLEL_STATIC
_IPP_SEQUENTIAL_STATIC

which correspond to the three models stated above.

0 Kudos
Reply