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

Windows DLL problems

groupw_bench
Beginner
1,063 Views
Having finally gotten my .exe files to run properly, I compiled two fairly simple Windows DLLs which had been previously compiled with CVF. After a lot of head-scratching and fiddling, I finally discovered the CVF calling convention and managed to get them to work on my main machine. But I'm running into snags when I test the program for distribution. After considerable more time spinning wheels, I've discovered that the two small DLLs require another 3-1/2 MB of support files, libifcoremd.dll and libmmd.dll. This doesn't make me too happy, since quite a number of my international customers are still downloading the program with a dialup connection. When I tried running the program on another machine running Windows 98, I found that yet another support file was necessary, msvcr80.dll. This is worrisome, because it seems to be part of the .NET framework. Copying it into the same directory as the .exe on the target machine seems to work, but some web research indicates this isn't kosher, and that is should only be installed as part of the .NET 2.0 framework. Is this true? If so, it means that my customers are going to have to download and install another 20 MB of software just so my two 20 kB DLLs will run. Or is it ok to just put a copy in the directory with the .exe? Will this work ok on all Windows operating systems (except 95, which I no longer support)?

I seem to be missing some documentation for IVF 9.1. I can't find anything at all that tells very much about compiling and distributing DLLs, such as what files are required. What document describes this and where can I get it?

0 Kudos
6 Replies
Steven_L_Intel1
Employee
1,063 Views
You would have had much the same issue with CVF.

If your DLL is linked against the DLL libraries, yes, you must distribute the dependent DLLs along with it. Placing them in the same directory as the .EXE on the target machine is the recommended solution, and it's fine to do that with MSVCR80.DLL. Note that placing them alongside your DLL won't work (unless it's in the same folder as the EXE which uses it.)

Some may suggest linking the DLLs statically, but if you have two related DLLs, I do not recommend that - it can cause odd run-time behavior.

In a future release you may no longer need to copy MSVCR80.DLL
0 Kudos
groupw_bench
Beginner
1,063 Views
Thanks, but I've enountered two additional problems with my IVF-compiled DLLs.
First, on machines with an early version of XP, the calling program still can't find the DLL. Dependency Walker reports that "The side-by-side configuration information in contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001)."

How do I correct this problem?

And, Dependency Walker also reports that my DLLs require MSJAVA.DLL, another MB of needed support I'll apparently have to distribute. I'm not sure Microsoft intends this to be a redistributatable file -- does anyone know if that's the case?

0 Kudos
Steven_L_Intel1
Employee
1,063 Views
I can't comment about MSJAVA.DLL - that dependency is not created by Intel Fortran.

What "early version of XP" is this?
0 Kudos
groupw_bench
Beginner
1,063 Views
I see this error on a clean Windows XP system installed from a Windows XP CD purchased before the release of SP1, and on which neither SP1 nor SP2 has been installed. I haven't yet tried installing SP1 or SP2 on this virgin installation to see if the error still occurs. The error isn't appearing on several XP operating systems which have been in use for some time and which have had numerous updates and other applications installed.

But I just got word back from one of my testers that he's seeing this error on a Windows XP system on which SP2 is installed. So it does happen on some Windows XP SP2 systems as well.

0 Kudos
groupw_bench
Beginner
1,063 Views
I've just confirmed that the error is occurring on a clean Windows XP installation with SP2 installed. So the problem has nothing to do with whether or not SP1 or SP2 is installed. Apparently the DLLs require something that's present on some XP systems which have been in use for a while, but not on a newly installed XP/SP2 operating system or on some systems which are in use.

For these tests, the following files are present in the same directory as the DLL:

libifcoremd.dll
libmmd.dll
msvcr80.dll
libguide40.dll (required by a Fortran .exe which is part of the program)

0 Kudos
Steven_L_Intel1
Employee
1,063 Views
I'm going to ask that you take this to Intel Premier Support. Please file an issue, attach your project that builds the DLL with the DLL provided. Ask that it be assigned to Steve Lionel.
0 Kudos
Reply