Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7231 Discussions

Intel MKL + ATL/COM DLL regsrv32 error in debug build, but not in release...

pascal_M_
Beginner
12,399 Views

Hello all,

I have a strange problem, similar to the one from this post :

http://software.intel.com/en-us/forums/topic/283594

I have windows 8 64bits pro, I am using visual studio 2010 ultimate, and compiling a 32 bits ATL/COM dll.

The MKL was linked to my visual studio 2010 project thanks to the integration of MKL to visual studio 2010, so that I just went to the properties of my project and choose (for all configurations) to use the sequential MKL library. (I wasn't even able to find in my project where the linking is explicitely appearing because it does not appear at the usual places I was modifying to link the mkl to my previous project, at the "pre-integration" time...)

When I build in debug mode, when I build for the first time (or when I do a rebuild) I have the following output :

"C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(744,5): warning MSB3073: The command "regsvr32 /s "C:\CODAGE\win8\mvs2010\MyBS\Toto\Debug\Toto.dll"" exited with code 3.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(756,5): error MSB8011: Failed to register output. Please try enabling Per-user Redirection or register the component from a command prompt with elevated permissions."

and when I just build for the second time (or when I do a simple build) I have no output error like the previous ones, but the problem remains, because dll doesn't even let itself being referenced in VBA, indicating that the debug one is completely f***ed up...

So I first tried to execute the "regsrv32 /s" command on my debug dll with the highest permissions, which failed, and then I tried to enable per-user redirection also, with the same result.

Then I searched on google and found the link I was mentionning at the beginning of my post :

http://software.intel.com/en-us/forums/topic/283594

I followed what was advised there and renamed the 64bits include, lib and bin directories, without success --> still the same error in debug build. Then I found this intel fortran related post :

http://software.intel.com/en-us/forums/topic/285673

where the advise was to pass the problematic dll to dependancy walker. I did it, and had this log message :

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module."

I search everywhere in dependancy walker, but did not find anything... I should mention that I have exactly the same issue when I build in release mode.

Help would be greatly appreciated !!

Thx a lot !

LvM

PS : I only have this related to the MKL in the code of the project compiling my dll :

#include "mkl_vsl_functions.h"
#include "mkl_vsl.h"

0 Kudos
24 Replies
Pierre_L_4
Beginner
1,857 Views

I made work MisesEnForce's zipped project with the following configuration.

C:\Program Files (x86)\Intel\Composer XE 2013 SP1\redist\ia32\mkl;

in the PATH env var and with following properties in MVS :

 in properties --> configurations properties --> VC++ directories

- exectuable directories : C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\redist\ia32\mkl;C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\bin;C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\bin\ia32;$(ExecutablePath)

- include directories : C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\mkl\include\ia32;C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\mkl\include;$(IncludePath)

- library directories : C:\Program Files (x86)\Intel\Composer XE 2013 SP1\compiler\lib\ia32;C:\Program Files (x86)\Intel\Composer XE 2013 SP1\redist\ia32\mkl;C:\Program Files %28x86%29\Intel\Composer XE 2013 SP1\mkl\lib\ia32;$(LibraryPath)

In properties --> configurations properties --> linker --> input I tried to put :

mkl_intel_c.lib
mkl_intel_thread.lib
mkl_core.lib

libiomp5md.lib

comsvcs.lib

Brace yourself MisesEnForce, no need for you to chase and wait an hypothetical hypothetically useful answer from Sergey ! :-)

Regards,

Pierre

0 Kudos
SergeyKostrov
Valued Contributor II
1,857 Views
>>...Brace yourself MisesEnForce, no need for you to chase and wait an hypothetical hypothetically useful answer from Sergey ! :-)... Guys, Please confirm that the problem is resolved. Thanks in advance. Note: I will take a look at the zip file just in case.
0 Kudos
SergeyKostrov
Valued Contributor II
1,857 Views
This is simply to inform that I completed a verification of ValidationMKLUsing_MVS2010.dll ( from a Debug folder ) on two development computers ( Windows XP ( 32-bit ) and Windows 7 ( 32-bit and 64-bit ) ) using MS Depends utility and all MKL DLLs are found. So, it is already confirmed by two developers that the problem is related to some issues with PATHs on your development computer. I also completed a quick code review for a part related to MKL processing: ... STDMETHODIMP CTheATLObject::THEATLOBJECTMETHOD( DOUBLE * x ) { VSLStreamStatePtr stream; vslNewStream( &stream, VSL_BRNG_SFMT19937, 777 ); double pUNIF = 0.0; vdRngUniform( VSL_RNG_METHOD_UNIFORM_STD_ACCURATE, stream, 1, &pUNIF, 0.0, 1.0); vslDeleteStream( &stream ); *x *= pUNIF; return S_OK ; } ... and it looks good.
0 Kudos
SergeyKostrov
Valued Contributor II
1,857 Views
>>... >>...mkl_intel_thread.lib >>... Pierre, simply to note that the ValidationMKLUsing_MVS2010.dll doesn't use parallel MKL DLL and a sequential MKL DLL is used instead.
0 Kudos
Reply