Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Use of libiomp5md.dll on Windows XP

Carstensen
New Contributor I
1,110 Views

Hi,

With reference to my previous post, I have a multithreaded 32 bit DLL which use the MKL library. I must therefore provide the libiomp5md.dll along with my DLL for the users. This works fine when the users copy the libiomp5md.dll into "C:\Windows\SysWOW64" folder in Windows 10. However, I have a user that runs my DLL on an old computer (Windows XP from 2002) which cannot be updated to newer version of Windows for various reasons. The Windows XP operative system is 32 bit, so we have tried to copy the libiomp5md.dll into the "C:\Windows\System32" but it doesn't work. Any suggestions?

Kind regards,
Carl

 

0 Kudos
3 Replies
jimdempseyatthecove
Honored Contributor III
1,098 Views

Copy it to any folder in PATH

.OR. add the folder you place it into at the end of PATH

.OR. copy it to the folder you place your application into.

 

The DLL's are loaded using the standard folder search path for .DLL's

 

Resolution
The following describes the search order used by 32-bit versions of Windows when searching for a DLL:

If a path for the DLL is specified, Windows searches for the DLL  in the specified directory.

If the DLL is listed in the Windows registry in the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\KnownDLLs key, Windows searches for the DLL in the following locations in order:
  1. The %SystemRoot%\SYSTEM32 directory. 
  2. The .exe file directory.
  3. The current directory.
  4. The %SystemRoot% directory.
  5. The directories in your Path.
In the registry key above, each DLL is listed as type REG_SZ. The Name value is the name of the DLL without the .dll extension. The Data value is the name of the DLL including the .dll extension.

If no path is specified for the DLL and the DLL is not listed in the Windows registry, Windows searches for the DLL in the following locations in order:
  1. The .exe file directory.
  2. The current directory.
  3. The %SystemRoot%\SYSTEM32 directory.
  4. The %SystemRoot% directory.
  5. The directories in the Path.

 

** 64-bit Winbdows: SYSTEM32 contains 64-bit files, SysWOW64 contains the 32-bit files

 

Jim Dempsey

0 Kudos
Carstensen
New Contributor I
1,010 Views

Hi Jim,

The program fails to find the dll even though we try all the steps above. Not sure what to do.

\Carl

0 Kudos
Steve_Lionel
Honored Contributor III
1,004 Views

libiomp5md.dll (you are using the 32-bit version of that, right?) depends on VCRUNTIME140.dll (part of Visual C++), which is unlikely to be installed on the XP system. Try installing it from Download Microsoft Visual C++ 2015 Redistributable Update 3 RC from Official Microsoft Download Center as it does seem it supports XP.

0 Kudos
Reply