Community
cancel
Showing results for 
Search instead for 
Did you mean: 
wagnerkamakura
Beginner
27 Views

Intel Fortran XE 2015 producing large dll's

I am re-compiling old code that I originall used to produce 32-bnit dll's into 64-bit dll's, and noticed that the 64-bit dll's produced by Intel Fortran Composer XE 2015 (with IMSL) are much larger than the 32-bit equivalents I had compiled with another compiler a long while ago.

The older 32-bit dll's had between 200K to 600K, while the 64-bit dll's produced with Fortran composer XE are between 8Mb and 10Mb!

What am I doing wrong?  Here's my project setup:

Fortran command line:  /nologo /O2 /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc120.pdb" /libs:static /threads /c

Linker commend line: /OUT:"x64\Release\FortDLL.dll" /NOLOGO /MANIFEST /MANIFESTFILE:"x64\Release\FortDLL.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /SUBSYSTEM:WINDOWS /IMPLIB:"E:\WAKData\Dropbox\FortDLL\FortDLL\x64\Release\FortDLL.lib" /DLL

 

Thanks,

 

Wagner 

0 Kudos
3 Replies
jimdempseyatthecove
Black Belt
27 Views

Two possible causes:

a) There was a post elsewhere on the forum where it was noticed that some standard runtime messages were redundantly insert into the code, when it should have been inserting an index into a standard message table.

b) Interprocedural optimizations is default enabled. Try disabling interprocedural optimizations.

Jim Dempsey

wagnerkamakura
Beginner
27 Views

Jim,.

Thank you for your suggestions.  My project settings had interprocedural optimizations disabled.  I tried to enable them (/Qpro), but the dll size did not change.

Regarding your first suggestion, could you elaborate on the potential solution?

 

Wagner 

 

Steven_L_Intel1
Employee
27 Views

I would suggest that in the past you weren't using /libs:static. This includes the entire run-time library for Fortran and C into your DLL. Best to not do that and use the DLL redistributables on a target system.

The issue Jim mentions doesn't apply to you since you have not enabled /check:bounds.