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

How to rebuild OpenCV1.0 to use libiomp5md.dll instead of libguide40.dll?

sgyaqing
Beginner
494 Views
Hi,
I want to rebuild OpenCV 1.0 using VS2008 and ICC 11 to avoid this runtime error message:
"OMP abort: Initializing libguide40.dll, but found libiomp5md.dll already initialized.

This can cause performance degradation.

Set environment variable KMP_DUPLICATE_LIB_OK=TRUE if you want your program to continue in this case."

and I have read this article:
http://software.intel.com/en-us/articles/opm-abort-initializing-libguide40dll/

I searched in OpenCV project settings but didn't find any referrence to "libguide40.lib". How can I remove relation to "libguide40.dll" in OpenCV projects and rebuild them?
By the way, OpenCV projects ignore "libmmd.lib" in Linker->Input->Ignore Specific Library. If I build OpenCV with this setting, the linker can't find external functions such as libm_sse2_sincos. When I fill "libmmd.lib"(sometimes "libm.lib") in Linker->Input->Addtional Dependencies, I can build it successfully. My question is, is it right to build OpenCV with "libmmd.dll" without any problem? Which library file should I use, "libm.lib" or "libmmd.lib"?

Thanks
Yang, Qingjin
0 Kudos
1 Reply
Ying_H_Intel
Employee
494 Views
Quoting - sgyaqing
Hi,
I want to rebuild OpenCV 1.0 using VS2008 and ICC 11 to avoid this runtime error message:
"OMP abort: Initializing libguide40.dll, but found libiomp5md.dll already initialized.

This can cause performance degradation.

Set environment variable KMP_DUPLICATE_LIB_OK=TRUE if you want your program to continue in this case."

and I have read this article:
http://software.intel.com/en-us/articles/opm-abort-initializing-libguide40dll/

I searched in OpenCV project settings but didn't find any referrence to "libguide40.lib". How can I remove relation to "libguide40.dll" in OpenCV projects and rebuild them?
By the way, OpenCV projects ignore "libmmd.lib" in Linker->Input->Ignore Specific Library. If I build OpenCV with this setting, the linker can't find external functions such as libm_sse2_sincos. When I fill "libmmd.lib"(sometimes "libm.lib") in Linker->Input->Addtional Dependencies, I can build it successfully. My question is, is it right to build OpenCV with "libmmd.dll" without any problem? Which library file should I use, "libm.lib" or "libmmd.lib"?

Thanks
Yang, Qingjin

Hi Qingjin,

TheOpenCV project(i.e cxcore)hasone option "/Qopenmp", whichwill actually link Intel OpenMP run time library. Since intel Compiler11have tooklibiomp5md.lib as default OpenMP run time library, it isfine for you rebuildthe openCV usingICC 11.This remove therelation with libguide40.dll.

In addition,as intel compiler documentmentions
Library Option Description
libm.lib Default static math library.
libmmt.lib /MT Multi-threaded static math library.
libmmd.lib /MD Dynamically linked math library.
libmmdd.lib /MDd Dynamically linked debug math library.
libmmds.lib Static version compiled with /MD option.

So I think it is ok to use libmmd.lib or libmmds.libas OpenCV project build with /MD option. (no surewhy the OpenCV project add the libmmd as Ignorelibrary)

Best Regards,
Ying H.
0 Kudos
Reply