- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page