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

Where applications look for dll's?

Magne_R_
Beginner
710 Views
Hi Steve,

Is the PATH the only guide for applications to dll's? If your application is dependent on a dll there must be a path included in PATH environment variable? When we develop OpeneMP 32 and 64 bit applications we need to locate the libiomp5md.dll. As far as I can see the 32 and 64 versions of this dll are different, but share the same name. If we have both 32 and 64 bit paths to libimop5md.dll in our PATH will there not be a confusion due to the identical name? Will the application automatically choose the correct version?

Thanks in advance for a reply!

Magne Rudshaug
Norway
0 Kudos
5 Replies
TimP
Honored Contributor III
710 Views
Yes, automatic choice between the 32- and 64-bit dlls should work. The search path includes the directory of the .exe, as well as any directories you add specifically to PATH (as the ifortvars.bat scripts do).
0 Kudos
Wendy_Doerner__Intel
Valued Contributor I
710 Views
Quoting - tim18
Yes, automatic choice between the 32- and 64-bit dlls should work. The search path includes the directory of the .exe, as well as any directories you add specifically to PATH (as the ifortvars.bat scripts do).

Hi Magne,

Since your post was directed to Steve, just wanted to let you know he is out for a couple of days. Tim is correct in his answer though.

Wendy
0 Kudos
Magne_R_
Beginner
710 Views

Hi Tim,

Does this mean that we need to have path's to both the 32 bit and 64 bit version of the libiomp5md dll in our PATH environment variable to have both type executables run directly (ctrl+F5) from Visual Studio? I'm currently struggeling with this on my Window 2008 Server installation. I get a "Can not locate libiomp5md.dll" when I try to run my exe file by doing ctrl+F5.

Magne

Hi Steve,

Is the PATH the only guide for applications to dll's? If your application is dependent on a dll there must be a path included in PATH environment variable? When we develop OpeneMP 32 and 64 bit applications we need to locate the libiomp5md.dll. As far as I can see the 32 and 64 versions of this dll are different, but share the same name. If we have both 32 and 64 bit paths to libimop5md.dll in our PATH will there not be a confusion due to the identical name? Will the application automatically choose the correct version?

Thanks in advance for a reply!

Magne Rudshaug
Norway

0 Kudos
TimP
Honored Contributor III
710 Views
If I understand the question, yes. Both the 32- and 64-bit OpenMP libraries would need to be on PATH, so that you could run either 32- or 64-bit OpenMP linked .exe without modifying the setup. I think there was a post by Steve Lionel some time back about the configuration of compiler installation on 64-bit Windows so that it should be this way automatically, where both 32- and 64-bit compilers are present.
The basic 64-bit Windows configuration always has both 32- and 64-bit versions of the same named dlls on base path. It is possible, although not recommended, with sufficient privilege, to put your own dlls in the corresponding windows system dll folders. Among reasons this would not be recommended is that you must remember to remove those dlls when you update your application, particularly if built with a newer compiler.

I have to say I don't run into this in practice, as generally 64-bit OpenMP is sufficiently superior that a 32-bit OpenMP .exe would not be used where there is a choice. Also, the static link is often used when a .exe is built to be run outside the compiler installation. The vociferous warning against static OpenMP link is meant only to avoid some of the accidental ways of linking multiple copies of OpenMP.
0 Kudos
Magne_R_
Beginner
710 Views
Hi Tim,

Thanks for an exellent reply!

Magne

Quoting - tim18
If I understand the question, yes. Both the 32- and 64-bit OpenMP libraries would need to be on PATH, so that you could run either 32- or 64-bit OpenMP linked .exe without modifying the setup. I think there was a post by Steve Lionel some time back about the configuration of compiler installation on 64-bit Windows so that it should be this way automatically, where both 32- and 64-bit compilers are present.
The basic 64-bit Windows configuration always has both 32- and 64-bit versions of the same named dlls on base path. It is possible, although not recommended, with sufficient privilege, to put your own dlls in the corresponding windows system dll folders. Among reasons this would not be recommended is that you must remember to remove those dlls when you update your application, particularly if built with a newer compiler.

I have to say I don't run into this in practice, as generally 64-bit OpenMP is sufficiently superior that a 32-bit OpenMP .exe would not be used where there is a choice. Also, the static link is often used when a .exe is built to be run outside the compiler installation. The vociferous warning against static OpenMP link is meant only to avoid some of the accidental ways of linking multiple copies of OpenMP.

0 Kudos
Reply