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
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.
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?
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.