Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Madhan_S
Beginner
130 Views

Debug version for linking

Jump to solution

My application has to build in both debug and release modes and I want to link Intel IPP libs statically. Are the debug libs available ?

Even in case of dlls, are the debug version of Intel IPP libraries available. I am aware that debugging in release mode can be enabled but I would like to link my application with debug CRT.

 

 

 

0 Kudos
1 Solution
Ying_H_Intel
Employee
130 Views

Hi Madhan, 

We have such problem discussed in the forum.  I find one related 

like https://software.intel.com/en-us/forums/topic/293778

In common MSVC environment,user should be free to choose /MD or/MT option, because we try to remove such dependency, the current IPP static (both single and threaded) libraries do not include any link MSVC runtime library directly. 

So generally, as sergey mentioned, we think it doesn't matter with /Md or /MT option with IPP static library. 

The example you mentioned looks a warning.  Do you happen to get link error when link IPP static library in your project? 

By the way, I'm investigating your issue in premier.intel.com (IPS) 6000057954,  Could you please update some background messages in IPS  or here if it is convenient for you. 

Best Regards,
Ying 

View solution in original post

5 Replies
Sergey_K_Intel
Employee
130 Views

Hi Madhan,

The IPP libraries are available in the only form - release libs. You can link them to both kind of projects - debug and release. Thus, you can have debug information in your code and call release mode libraries from it. The form of libraries, which are called from debug mode code, doesn't matter.

Madhan_S
Beginner
130 Views

Hi Sergey,

I think the variant of C run time library used to create the library (as specified by flags /MT, /MD, /MTd, /MDd) does make a difference. 

The goal is to use the same C run time library throughout the application. This isn't met when IPP dlls are compiled as /MD in release mode and I am creating the exe in debug mode using /MDd. And I would prefer to maintain a consistent build environment where there is no mix of the CRTs with debug being true debug and not release mode with debugging enabled. 

As a simple test, you can create a static lib in debug (using /MTd) and try to link it statically to an exe in release (which uses /MT), you will get a linker warning "LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library".

Please check this and this

Regards,
Madhan

Ying_H_Intel
Employee
131 Views

Hi Madhan, 

We have such problem discussed in the forum.  I find one related 

like https://software.intel.com/en-us/forums/topic/293778

In common MSVC environment,user should be free to choose /MD or/MT option, because we try to remove such dependency, the current IPP static (both single and threaded) libraries do not include any link MSVC runtime library directly. 

So generally, as sergey mentioned, we think it doesn't matter with /Md or /MT option with IPP static library. 

The example you mentioned looks a warning.  Do you happen to get link error when link IPP static library in your project? 

By the way, I'm investigating your issue in premier.intel.com (IPS) 6000057954,  Could you please update some background messages in IPS  or here if it is convenient for you. 

Best Regards,
Ying 

View solution in original post

Madhan_S
Beginner
130 Views

Hi Ying,

By choosing ipp*_t.lib versions I was able to link the libs in /MD and /MT variants. The intel libs are independent of the CRT. Thanks for the answer.

manca1
Beginner
130 Views

Hey guys,

I had problems with H.264 decoder from 7.0.7 samples today. I adjusted some code and refactored some of the functions that used H.264 decoder and suddenly in Debug mode decoder would crash on Init().

After hours of trying everything I realized that the h264_dec.lib I had in my project was the release lib and it was using the Release runtime. I was running /MDd and I was linking to debug msvcrtd.dll. Obviously these two conflicted somehow and some of the STL calls would just crash (in the very Init() function).

After rebuilding codecs for debug the problems disappeared and now everything works fine.

I really don't understand how it used to work with the release libs in debug for years and now suddenly it decided to stop working. Fortunately it's solved.

Just a heads up for future generations :)

 

Reply