Win32 build needs x64 DLLs

Win32 build needs x64 DLLs

Tony D.'s picture

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?

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Steve Lionel (Intel)'s picture

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.

Steve
Tony D.'s picture

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.

Steve Lionel (Intel)'s picture
Best Reply

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.

Steve
Tony D.'s picture

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!

Tim Prince's picture

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.

Steve Lionel (Intel)'s picture

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.

Steve

Login to leave a comment.