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

Win32 build needs x64 DLLs

Tony_D_
Beginner
610 Views

I have built a Win32 application using a FORTRAN library. When I try to run it on a 32 bit O/S, it wants to use libifcoremdd.dll and libmmd.dll from the \Intel64 folder which obviously doesnt work. If I copy the above DLLS from the IA-32 folder to my application folder the application works OK but surely I should not need to do this.

I have checked all the Fortran paths for a Win32 build and they all point to files in the IA-32 folder so I don't understand why the application is trying to load x64 versions of the dlls.

can anyone help please?

0 Kudos
1 Solution
Steven_L_Intel1
Employee
610 Views

What you want to see in PATH is (partially) these:

C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler

You don't want to see any "Intel64" in there.

View solution in original post

0 Kudos
6 Replies
Steven_L_Intel1
Employee
610 Views

Did you manually add the Intel64 redistributables folder to PATH? Our install doesn't do that on a 32-bit system. On 64-bit Windows, both the 32-bit and 64-bit DLLs are on PATH and Windows automatically skips over the "wrong" one.

0 Kudos
Tony_D_
Beginner
610 Views

Ah, so its purely down to the path settings, I haven't messed with that since the goo old DOS days and TBH I had forgotten about it (it has been a long time!). All this time I have been thinking it must be a Visual Studio setting - doh!

I have 'inherited' the development PC so I don't know what the path environment variable is currently set to. I am not at the PC right now but I will be sure to check this first thing tomorrow!

Thanks ever so much for the tip.

0 Kudos
Steven_L_Intel1
Employee
611 Views

What you want to see in PATH is (partially) these:

C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\mpirt;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler

You don't want to see any "Intel64" in there.

0 Kudos
Tony_D_
Beginner
610 Views

Steve,

I checked the PC this morning and the first path listed was to the I64 DLLs so I removed it and my application worked. I then tried putting this path after the ia32 entry in the path string and it still worked, presumably because of the search order. I wonder then, what would happen if we ever built a 64 bit version of the application. Is Windows smart enough to know that the 32 bit dlls are unsuitable and move on to the next folder in the path? It certainly isnt smart enough to do it the other way round!

Anyway, thanks a million for your help!

0 Kudos
TimP
Honored Contributor III
610 Views

Possibly depending on your Windows version, there may be a limit on how much of PATH is actually used.  As Steve said, it should be possible on win-x64 to have both 32- and 64-bit entries with the unsuitable ones discarded automatically.

0 Kudos
Steven_L_Intel1
Employee
610 Views

On a 32-bit system, your 64-bit application would not run, no matter what. On a 64-bit system, as I said above, Windows skips over "wrong architecture" DLLs (and executables) in PATH.

0 Kudos
Reply