- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi. I have found posts which seem related but not quite like what I'm seeing.
Here's the situation. I have been happily using a WinXP32 box to develop for years. Now I have moved to a WinXP64 box. Please don;t tell me why this is a bad idea. It is driven by inscrutible customer requirements, which are not required to make sense.
I have a large mixed language application built using Visual Studio 2005 SP1 and IVF 10.1.30. I am using Microsoft's C++ compiler.
On my WinXP32 build system, I can target both x32 and EM64T targets, iin both debug and release. Compile and link. They run on their intended targets.
Then I made a backup of my solution/project files.
Then I moved my whole setup to a WinXP64 build system. Installed VS 2005 SP1 and IVF 10.1.30 and copied over my solution/project files.
All targets compile and link. The x32 Release target runs, but the x32 Debug target does not run. Instead, the x32 Debug target terminates on startup with a message stating that it cannot find libmmd.dll. This seems odd. I thought that was the release version of the mathlib. Ok, I copy it to the executable's directory, but still not good. On a hunch, I added %IFORT_COMPILER10%\IA32\Lib to the system path (which already has %IFORT_COMPILER10%\EM64T\Lib). Now it works!
I also noticed that in Tools...Options...Intel Fortran, the win32 settings and the win64 Bin paths both point to %IFORT_COMPILER10%\EM64T\Lib and neither points to %IFORT_COMPILER10%\IA32\Lib. Changing that and restarting visual studio did not seem to have any effect...
I have not installed the Visual Studio x32 redistributables. I'm not sure that's relevant here?
Clearly there is a lot I do not understand about moving from my old familiar Win32 machine to my new Win64 machine. I will appreciate any help, including advice to R(specific sections of)TFM.
I am willing to work hard on his. All I need is a push. Thanks!
Here's the situation. I have been happily using a WinXP32 box to develop for years. Now I have moved to a WinXP64 box. Please don;t tell me why this is a bad idea. It is driven by inscrutible customer requirements, which are not required to make sense.
I have a large mixed language application built using Visual Studio 2005 SP1 and IVF 10.1.30. I am using Microsoft's C++ compiler.
On my WinXP32 build system, I can target both x32 and EM64T targets, iin both debug and release. Compile and link. They run on their intended targets.
Then I made a backup of my solution/project files.
Then I moved my whole setup to a WinXP64 build system. Installed VS 2005 SP1 and IVF 10.1.30 and copied over my solution/project files.
All targets compile and link. The x32 Release target runs, but the x32 Debug target does not run. Instead, the x32 Debug target terminates on startup with a message stating that it cannot find libmmd.dll. This seems odd. I thought that was the release version of the mathlib. Ok, I copy it to the executable's directory, but still not good. On a hunch, I added %IFORT_COMPILER10%\IA32\Lib to the system path (which already has %IFORT_COMPILER10%\EM64T\Lib). Now it works!
I also noticed that in Tools...Options...Intel Fortran, the win32 settings and the win64 Bin paths both point to %IFORT_COMPILER10%\EM64T\Lib and neither points to %IFORT_COMPILER10%\IA32\Lib. Changing that and restarting visual studio did not seem to have any effect...
I have not installed the Visual Studio x32 redistributables. I'm not sure that's relevant here?
Clearly there is a lot I do not understand about moving from my old familiar Win32 machine to my new Win64 machine. I will appreciate any help, including advice to R(specific sections of)TFM.
I am willing to work hard on his. All I need is a push. Thanks!
1 Solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
On x64 systems, you can have both 32-bit and 64-bit DLLs in PATH and Windows will pick the right one. We did not realize this for a while - and I'll take the blame for it - so the installer did not, for a while, add both, but it does now.
I don't think libmmdd.dll is used for anything anymore. It is there for historical reasons.
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Add the IA32LIB folder to PATH as well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Steve Lionel (Intel)
Add the IA32LIB folder to PATH as well.
Thank you, Steve. I'm sorry if I am being dense, but as I mentioned I added %IFORT_COMPILER10%IA32Lib to my system PATH environemnt variable. That got my program to run. Or do you mean a different IA32LIB ot a different PATH variable than the ones I am talking about?
The funny thing is, I do not recall ever having to do this on my WinXP32 machine.
And isn't libmmd.dll the Release lib? Seems odd that I would need that in Debug, since there is also a libmmdd.dll.
Again, my Release build works fine, with ouyt tinkering with any Paths.
And why does dropping the libs into my program's folder not work for this x32 app on an Win64 host, whereas dropping the libs into the program bin filder worked fine on Win32.
I realize I am asking a lot of basic questions. I guess there's a lot that just worked on Win32 that is trickier on Win64. I'm willing to do the work, and I need to understand the why as well as the how.
Thanks again!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
On x64 systems, you can have both 32-bit and 64-bit DLLs in PATH and Windows will pick the right one. We did not realize this for a while - and I'll take the blame for it - so the installer did not, for a while, add both, but it does now.
I don't think libmmdd.dll is used for anything anymore. It is there for historical reasons.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Steve Lionel (Intel)
On x64 systems, you can have both 32-bit and 64-bit DLLs in PATH and Windows will pick the right one. We did not realize this for a while - and I'll take the blame for it - so the installer did not, for a while, add both, but it does now.
I don't think libmmdd.dll is used for anything anymore. It is there for historical reasons.
Ok, Steve. I don't need anyone to take any blame. I'm just happy to be making progress.
It makes sense (in hindsight) that Win64 can pick the correct lib, since the decorations are different for x64. Good.
I will try removing libmmdd.dll (and libmmdd.lib) from both my x32 and x64 builds. Believe it or not, IVF is the simplest of my project dependencies. Anything I can eliminate is good!
After that, my next task will be understanding how to deploy. I got used to being able to copy IVF DLL's into my exe $OutputDir on Win32 and having everything work (in development; I would never deploy that way of course) but I guess Win64 is different and I have some things to learn.
Thanks for clearing up a lot of my questions so quickly!

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page