Forum Jump

Select Group :
Select Forum :
Sorted By :
Sort Order :
From The :
 
Thread Tools  Search this thread 
bendel boy
Total Points:
480
Status Points:
430
Green Belt
July 7, 2009 2:39 AM PDT
DLL Dependencies
I've distributed a program with a DLL compiled using IVF 10.1. It runs fine on my PC, but not on the client's. 'Dependency Viewer' indicated that we needed

LIBMMDD -- Intel
LIBMMD -- Intel
LIBIFCOREMDD -- Intel
Plan9FOS -- Support file from me
MSVCR80D -- Microsoft
DFORRT -- used by Plan9FOS

and all these files are reported as being present in \Windows\System32.

But still the DLL is reported as failing to be found.

When I recompiled with DVF the DLL worked, so it appears to be that there is either a missing dependency, or one of the IVF files (or MSVCR80D) cannot just be copied, it needs registration.

My work-around at the moment is to re-issue using DVF, but I would like to move to IVF.

What suggestions are there for possible missing dependencies or incorrect installation assumptions?

The client's PC runs on XP. I can duplicate the problem on a PC that does not IVF as a development environment installed.

Thanks.

Jeremy

anthonyrichards
Total Points:
4,282
Status Points:
3,782
Brown Belt
July 7, 2009 3:08 AM PDT
Rate
 
#1
I've distributed a program with a DLL compiled using IVF 10.1. It runs fine on my PC, but not on the client's. 'Dependency Viewer' indicated that we needed

LIBMMDD -- Intel
LIBMMD -- Intel
LIBIFCOREMDD -- Intel
Plan9FOS -- Support file from me
MSVCR80D -- Microsoft
DFORRT -- used by Plan9FOS

and all these files are reported as being present in \Windows\System32.

But still the DLL is reported as failing to be found.

When I recompiled with DVF the DLL worked, so it appears to be that there is either a missing dependency, or one of the IVF files (or MSVCR80D) cannot just be copied, it needs registration.

My work-around at the moment is to re-issue using DVF, but I would like to move to IVF.

What suggestions are there for possible missing dependencies or incorrect installation assumptions?

The client's PC runs on XP. I can duplicate the problem on a PC that does not IVF as a development environment installed.

Thanks.

Jeremy


Those look like debug libraries to me. Try sending a release version.

Les Neilson
Total Points:
5,816
Status Points:
5,316
Brown Belt
July 7, 2009 3:08 AM PDT
Rate
 
#2

The names LIBMMDD and LIBIFCOREMDD indicate that you are distributing DEBUG versions of your exe/dll.
You may only distribute RELEASE versions (libmmd, libifcoremd etc)

The file fredist.txt in the <install-dir>/license folder lists the Intel compiler libraries that are redistributable.

Les

bendel boy
Total Points:
480
Status Points:
430
Green Belt
July 7, 2009 3:20 AM PDT
Rate
 
#3 Reply to #2
Quoting - Les Neilson

The names LIBMMDD and LIBIFCOREMDD indicate that you are distributing DEBUG versions of your exe/dll.
You may only distribute RELEASE versions (libmmd, libifcoremd etc)

The file fredist.txt in the <install-dir>/license folder lists the Intel compiler libraries that are redistributable.

Les
OK.

I didn't realise I couldn't send over a debug version. I'll try a release version.

Hopefully that will resolve the problem.


bendel boy
Total Points:
480
Status Points:
430
Green Belt
July 7, 2009 3:33 AM PDT
Rate
 
#4 Reply to #3
OK.

I didn't realise I couldn't send over a debug version. I'll try a release version.

Hopefully that will resolve the problem.
Edited contents of fredist.txt

List of Re-distributable files with the Intel(R) Fortran Compiler for Windows:

libmmd.dll
libmmdd.dll
libifcoremd.dll
libifcorert.dll

I note that the release DLL appears to have NO IVF dependencies ...


David White
Total Points:
3,796
Status Points:
3,296
Brown Belt
July 7, 2009 5:30 PM PDT
Rate
 
#5 Reply to #4
Quoting - bendel boy
Edited contents of fredist.txt

List of Re-distributable files with the Intel(R) Fortran Compiler for Windows:

libmmd.dll
libmmdd.dll
libifcoremd.dll
libifcorert.dll

I note that the release DLL appears to have NO IVF dependencies ...

If you link your DLL with static libraries (Multithreaded option -> uses switches /libs:static /threads), then you should be able to distribute your DLL without these libraries.  I previously had similar problems to you, but now do not distribute any secondary DLL's to my customers.

Regards,

David

forall
July 20, 2009 12:58 PM PDT
Rate
 
#6 Reply to #5
Quoting - David White

If you link your DLL with static libraries (Multithreaded option -> uses switches /libs:static /threads), then you should be able to distribute your DLL without these libraries.  I previously had similar problems to you, but now do not distribute any secondary DLL's to my customers.

Regards,

David

I have the same problem as well, with the dependency of my DLL on LIBIFCOREMD.DLL and LIBMMD.DLL that I would prefer not to have to redistribute.

I tried compiling the DLL with /libs:static in the Linker > CommandLine > Additional options (in the Release version) but Dependency Walker still reports the dependency on the IVF libraries above.

Any idea why this is happening? Any switches that may interfere with this? Help would be greatly appreciated!

I paste below my project settings (for IVF11+VS2008):

<Configuration Name="Release|Win32" ConfigurationType="typeDynamicLibrary">
<Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="..\..\XXX" AlternateParameterSyntax="false" LocalVariableStorage="localStorageAutomatic" InitLocalVarToNAN="true" FloatingPointExceptionHandling="fpe0" IEEEMinusZero="true" RuntimeLibrary="rtMultiThreadedDLL"/>
<Tool Name="VFLinkerTool" AdditionalOptions="/libs:static" SuppressStartupBanner="true" SubSystem="subSystemWindows" LinkDLL="true"/>
<Tool Name="VFResourceCompilerTool"/>
<Tool Name="VFMidlTool" SuppressStartupBanner="true"/>
<Tool Name="VFCustomBuildTool"/>
<Tool Name="VFPreLinkEventTool"/>
<Tool Name="VFPreBuildEventTool"/>
<Tool Name="VFPostBuildEventTool" CommandLine="copy $(OutDir)\$(ProjectName).dll &quot;..\YYY&quot; /y"/>
<Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>



Steve Lionel (Intel)
Total Points:
114,475
Status Points:
114,475
Black Belt
July 20, 2009 1:35 PM PDT
Rate
 
#7 Reply to #6
You did not set the option correctly.  /libs:static is a compiler option, not a linker option.  Set it as Fortran > Libraries > Use Run-Time Library > Multithreaded



forall
July 20, 2009 2:35 PM PDT
Rate
 
#8 Reply to #7
You did not set the option correctly.  /libs:static is a compiler option, not a linker option.  Set it as Fortran > Libraries > Use Run-Time Library > Multithreaded

Thanks Steve! I got confused because an earlier post said "If you link your DLL with static libraries (Multithreaded option -> uses switches /libs:static /threads),".

Does this mean my original /libs:static in the linker settings just gets ignored? Would it not be more informative to return a warning that an invalid switch was attempted?

Also - is there an equivalent option under CVF to statically link the DLL against other DLLs?

Incidentally, now when I check the dependencies I see the warning that "DWMAPI.dll" is missing. I googled it and it seems to be a common "problem" that isnt a problem if this DLL is never actually called.


Steve Lionel (Intel)
Total Points:
114,475
Status Points:
114,475
Black Belt
July 20, 2009 3:06 PM PDT
Rate
 
#9 Reply to #8
Do you not get something like this in the build output?

1>LINK : warning LNK4044: unrecognized option '/libs:static'; ignored

The option in CVF is the same and is pretty much in the same place in the project options.

Ignore the DWMAPI.dll thing.



forall
July 20, 2009 3:38 PM PDT
Rate
 
#10 Reply to #9
Do you not get something like this in the build output?

1>LINK : warning LNK4044: unrecognized option '/libs:static'; ignored

The option in CVF is the same and is pretty much in the same place in the project options.

Ignore the DWMAPI.dll thing.

My apologies - The Link warning was indeed issued but I missed it.

I also got the CVF static DLL linking working - thanks for that! I do still find comparing results on CVF vs IVF to frequently find coding (and ocasionally compiler) errors.




Intel Software Network Forums Statistics

8439 users have contributed to 31542 threads and 100364 posts to date.
In the past 24 hours, we have 11 new thread(s) 33 new posts(s), and 45 new user(s).

In the past 3 days, the most popular thread for everyone has been /fpp interferes with breakpoints/stepping through code - again The most posts were made to IVF 11.1.051 freezes during build The post with the most views is Quoting - dannycat When I

Please welcome our newest member obi_1