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

Visual Studio 2015 / Fortran 2017

Sascha_A_
Beginner
935 Views

Hello,

I tried to use compile Fortran projects as static libraries with Microsoft VS 2015 and the latest Intel Fortran Compilers. Therefore we create the vfproj-Files and start devenv.exe to compile them as "Debug|Win32" or "Release|x64". We do so with VS2010 and Fortran 2011 which works fine so far.

We want to upgrade, unfortunately I cannot get this to work. Whenever I call devenv from my batch file with my vfproj-Project it works with "*|x64" and compiles the x64 static libraries to the configured x64 directories. If I try to compile "*|Win32" a Window opens which tells me I did the call incorrectly. Apparently "Win32" is the problem, which works fine with VS2010/IF2011. So we tried "*|x86" which works fine. It uses the Win32 configuration, unfortunately fortran compiles x64 objects into the x86 directories.

When compiling inside devenv we can create x86 and x64 files as desired.
But we cannot start Visual Studio on our build server and do this by hand for more than 90 static libs.

Additionally, last friday my evaluation period is expired. We don't have a running system so far and we're running out of ideas how to manage this.
So currently we cannot upgrade.

Maybe someone can give me the hint how to successfully compile fortran projects from comand line?

Thank you in advance

0 Kudos
7 Replies
Kevin_D_Intel
Employee
935 Views

Based on the description it sounds like there is a possible defect with our Fortran integrations in our 2017 release. I have to try recreating the scenario and then have our integrations developers investigate further.

If your support services for your what I presume is your default production configuration (VS2010/IVF2011) is not expired then you can use that with the VS2015/IVF2017 test environment also. If needed, we can discuss the evaluation expiration after we have an understanding the issue and determine whether there is a usable solution/work around.

0 Kudos
Sascha_A_
Beginner
935 Views

I have installed it on my development machine (W10, VS2015 Up1, Fortran 2015/4) last year. I had big problems with the 2016 version, even VS2015 crashed all the time, so I installed the 2015 version, which works better. I canceled this so far and restarted last month.
This year I reinstalled everything on a fresh Win10 virtual machine. I installed VS2015 Up3 and the latest Version of IF 2017 Up 1. Here I got the described errors. I moved back to my real machine, deinstalled VS 2015/1 and IF 2015 and installed VS2015/3 and IF 2017/1 which was updated to IF 2017/2. On both machines I have the identical behavior as described above.

We have one year of support, so currently I cannot do anything.
I personally would like to upgrade to VS2017 if IF would work reliably there.

0 Kudos
Steve_Lionel
Honored Contributor III
935 Views

I can reproduce this behavior with VS2015. More annoyingly, if I use /log to capture what is going on, no log is created.

For example:

C:\Projects\Console1>devenv console1.sln /build "Debug|Win32" /log log.txt

The operation could not be completed. The parameter is incorrect.

It then gives the devenv /? output. But...

C:\Projects\Console1>devenv console1.sln /build "Debug|x64" /log log.txt
1>------ Build started: Project: Console1, Configuration: Debug x64 ------
1>Compiling with Intel(R) Visual Fortran Compiler 17.0.2.187 [Intel(R) 64]...

(Still no log!)

0 Kudos
Sascha_A_
Beginner
935 Views

Well, is here any progress?
May I reckon that the Update 3 appears in May and will work?
Should I start writing make skripts because of this?
Or should we stay on Visual Studio 2010/Intel Fortran until Microsoft does not allow to install it anymore?

What should I tell the people who have to pay for a new Intel Fortran licence? Currently I have to say: It does not work in the way it did. So we have to change something or we're stucked. We put already a lot of afford to make it run. So the update is already quite expensive and does not work.

0 Kudos
Kevin_D_Intel
Employee
935 Views

I apologize for the delay. I was unable to recreate everything you described and then became distracted with other issues.

I  looked at two different static Fortran library solutions 1) “x86 and x64” configurations (lib1 – no Win32 configuration),   2)  “Win32 and x64” configurations (lib2 – no x86 configuration)

For lib2, I was unable to build the Win32 configuration. For unknown reasons, the devenv does not accept the “Win32” configuration argument and always reports the error “The parameter is incorrect”. When using “x86”, not surprising, nothing is built.

It seems devenv only accepts the “x86” configuration argument. This is something I need to discuss with our Integration developers.

As an aside, I tried building a MS C++ static library and it too does not build with the “Win32” configuration argument. It returns the same “The parameter is incorrect” error so I do not know if what we’re seeing with that is the cause of our integrations with VS.

For my lib1 solution/project, which has x86 and x64 configurations (no Win32), I can successfully build all configuration combinations of x86/x64 and Debug/Release.

I cannot reproduce all of what you described though.

When using “x86|Debug”, that’s accepted and the project builds. I can do this for both the Debug and Release configurations. I can also do the same with the x64 configuration. I’m am seeing no problems using devenv with any of those combinations.

However, when building the “x86” (either Debug or Release), what is odd/confusing is that the build output suggests the “<xxxx>|Win32” configuration is built, but it still does build.  Ex.

C:\u724555\Lib1>  devenv lib1.sln /build "release|x86"
1>------ Build started: Project: Lib1, Configuration: Release Win32 ------
1>Compiling with Intel(R) Visual Fortran Compiler 17.0.1.143 [IA-32]...
1>Source1.f90
1>Creating library...
1>
1>Build log written to  "file://C:\u724555\Lib1\Release\BuildLog.htm"
1>Lib1 - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

I also confirmed (you can also see in the output above) that the IA-32 compiler is used for the x86 builds and via dumpbin I confirmed the resulting object files are x86 (not x64) and the build places them into the expected Debug/Release directories for the x86 configuration.

C:\u724555\Lib1> cd Release
C:\u724555\Lib1\Release> dumpbin /headers Source1.obj
Microsoft (R) COFF/PE Dumper Version 14.00.23026.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file Source1.obj

File Type: COFF OBJECT

FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        5900BF15 time date stamp Wed Apr 26 09:39:01 2017
             1C9 file pointer to symbol table
               B number of symbols
               0 size of optional header
               0 characteristics

So, I am unable to re-create the aspect of the issue that you described where x64 objects are created in the x86 build directories. If that is not actually happening then it would seem the x86 configuration should be usable despite it reporting “Win32” being built.

If you have an example that can demonstrate the x64 objects being created in the x86 directories then we can investigate this further.

0 Kudos
Sascha_A_
Beginner
935 Views

Kevin D (Intel) wrote:
I apologize for the delay. I was unable to recreate everything you described and then became distracted with other issues.

Thanks for your honesty, as a German I like straight words. Nevertheless to be forgotten doesn't help me in that issue and does not increase my trust to perceive Intel Fortran as a helpful tool.

Kevin D (Intel) wrote:
I  looked at two different static Fortran library solutions 1) “x86 and x64” configurations (lib1 – no Win32 configuration),   2)  “Win32 and x64” configurations (lib2 – no x86 configuration)

For lib2, I was unable to build the Win32 configuration. For unknown reasons, the devenv does not accept the “Win32” configuration argument and always reports the error “The parameter is incorrect”. When using “x86”, not surprising, nothing is built.


Here it builds x64 if I have Win32 and x64 and use "x86".

Kevin D (Intel) wrote:
It seems devenv only accepts the “x86” configuration argument. This is something I need to discuss with our Integration developers.

As an aside, I tried building a MS C++ static library and it too does not build with the “Win32” configuration argument. It returns the same “The parameter is incorrect” error so I do not know if what we’re seeing with that is the cause of our integrations with VS.

Our C++ parts are compiled with MSBuild, which is working. I have no problem to use x86 instead of Win32, but so far we have been already.

Kevin D (Intel) wrote:
When using “x86|Debug”, that’s accepted and the project builds. I can do this for both the Debug and Release configurations. I can also do the same with the x64 configuration. I’m am seeing no problems using devenv with any of those combinations.

Yepp, that compiles. We only don't get the desired x86 object files.

Kevin D (Intel) wrote:

C:\u724555\Lib1>  devenv lib1.sln /build "release|x86"

1>------ Build started: Project: Lib1, Configuration: Release Win32 ------
1>Compiling with Intel(R) Visual Fortran Compiler 17.0.1.143 [IA-32]...
1>Source1.f90
1>Creating library...
1>
1>Build log written to  "file://C:\u724555\Lib1\Release\BuildLog.htm"
1>Lib1 - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

I also confirmed (you can also see in the output above) that the IA-32 compiler is used for the x86 builds and via dumpbin I confirmed the resulting object files are x86 (not x64) and the build places them into the expected Debug/Release directories for the x86 configuration.

C:\u724555\Lib1> cd Release
C:\u724555\Lib1\Release> dumpbin /headers Source1.obj

File Type: COFF OBJECT

FILE HEADER VALUES
             14C machine (x86)

So, I am unable to re-create the aspect of the issue that you described where x64 objects are created in the x86 build directories. If that is not actually happening then it would seem the x86 configuration should be usable despite it reporting “Win32” being built.

If you have an example that can demonstrate the x64 objects being created in the x86 directories then we can investigate this further.

Here we are:
Current Date is April 27th, Time was 11:20. The directory for the objectfiles is empty.

c:\source\for\strako01\build>date
Aktuelles Datum: 27.04.2017
Geben Sie das neue Datum ein: (TT-MM-JJ)
c:\source\for\strako01\build>time
Aktuelle Zeit: 11:20:39,11
Geben Sie die neue Zeit ein:
c:\source\for\strako01\build>dir
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: 9A75-68C2

 Verzeichnis von c:\source\for\strako01\build

27.04.2017  11:20    <DIR>          .
27.04.2017  11:20    <DIR>          ..
               0 Datei(en),              0 Bytes
               2 Verzeichnis(se), 307.392.532.480 Bytes frei

c:\source\for\strako01\build>pm -cd -p vc14 strako01

c:\source\for\strako01\build>call planmake.bat -cd -p vc14 strako01
devenv-vc14.bat C:\source\for\strako01\strako01-vc14.vfproj /rebuild "Debug|x86"
[INFO]: Env.var VS2015DIR not set!
C:\Users\progr\AppData\Local\Temp\build-project-vc14.log
"C:\Program Files (x86)\Microsoft Visual Studio 14.0"\common7\ide\devenv.exe C:\source\for\strako01\strako01-vc14.vfproj /rebuild "Debug|x86" /out C:\Users\progr\AppData\Local\Temp\build-project-vc14.log

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.
1>------ Neues Erstellen gestartet: Projekt: strako01-vc14, Konfiguration: Debug x86 ------
1>Deleting intermediate files and output files for project 'strako01-vc14', configuration 'Debug|x86'.
1>strako01-vc14: warning: TargetPath(C:\source\for\strako01\build\strako01-debug-vc14\strako01-vc14.lib) does not match the Library's OutputFile property value (c:\source\dicadkernel\lib\debug\x86\strako01d-vc14.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>Compiling with Intel(R) Visual Fortran Compiler 17.0.2.187 [IA-32]...

Configuration x86, we're using the IA-32 Compiler.
compiling...

1>stwichte.for
1>rechtloe.for
1>ifnkey.for
1>fubel.for
1>cfnmakty.for
1>zeitmess.for
1>spoolnam.for
1>lfndrekr.for
1>textabme.for
1>ifnabmak.for
1>hwswlin.for
1>stift.for
1>getstida.for
1>C:\source\for\strako01\getstida.for(59): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [C_CONTAINER]
1>C:\source\for\strako01\getstida.for(445): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [C_CONTAINER]
1>compilation aborted for C:\source\for\strako01\getstida.for (code 1)
1>
1>Build log written to  "file://C:\source\for\strako01\build\strako01-debug-vc14\BuildLog.htm"
1>strako01-vc14 - 93 error(s), 1 warning(s)
========== Alles neu erstellen: 0 erfolgreich, 1 fehlerhaft, 0 übersprungen ==========


========================================================================
strako01   ERROR (0 min, 12 sec)

1 TARGET(S) FAILED (0 min, 12 sec)

c:\source\for\strako01\build>dir
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: 9A75-68C2

 Verzeichnis von c:\source\for\strako01\build

27.04.2017  11:20    <DIR>          .
27.04.2017  11:20    <DIR>          ..
27.04.2017  11:21    <DIR>          strako01-debug-vc14
               0 Datei(en),              0 Bytes
               3 Verzeichnis(se), 307.391.774.720 Bytes frei

Compiling wasn't successful for every file, that's not important in that moment. The new directory has the name for the x86 configuration. So far so good.

c:\source\for\strako01\build>cd strako01-debug-vc14

c:\source\for\strako01\build\strako01-debug-vc14>dir
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: 9A75-68C2

 Verzeichnis von c:\source\for\strako01\build\strako01-debug-vc14

27.04.2017  11:21    <DIR>          .
27.04.2017  11:21    <DIR>          ..
27.04.2017  11:21             9.846 bewmodus.obj
27.04.2017  11:21             3.271 bildgwfu.obj
27.04.2017  11:21           123.410 BuildLog.htm
  ...
27.04.2017  11:21             8.299 spoint.obj
27.04.2017  11:20             3.666 spoolnam.obj
27.04.2017  11:21             4.480 stbcopy.obj
27.04.2017  11:20             9.188 stift.obj
27.04.2017  11:20             2.164 stwichte.obj
  ...
              70 Datei(en),        589.800 Bytes
               2 Verzeichnis(se), 307.391.774.720 Bytes frei

c:\source\for\strako01\build\strako01-debug-vc14>dumpbin /HEADERS stift.obj
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file stift.obj

File Type: COFF OBJECT

FILE HEADER VALUES
            8664 machine (x64)
               8 number of sections
        5901B7FB time date stamp Thu Apr 27 11:20:59 2017
            1D6C file pointer to symbol table
              3E number of symbols
               0 size of optional header
               0 characteristics

    ...

We have an x64 object file in the x86 directory by using the IA-32 compiler.
That's my main problem currently.


Lets do the same for x64:
 

C:\Users\progr>call planmake.bat -cdx -p vc14 strako01
devenv-vc14.bat C:\source\for\strako01\strako01-vc14.vfproj /rebuild "Debug|x64"
[INFO]: Env.var VS2015DIR not set!
C:\Users\progr\AppData\Local\Temp\build-project-vc14.log
"C:\Program Files (x86)\Microsoft Visual Studio 14.0"\common7\ide\devenv.exe C:\source\for\strako01\strako01-vc14.vfproj /rebuild "Debug|x64" /out C:\Users\progr\AppData\Local\Temp\build-project-vc14.log

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.

Das Paket "IFLangServicePackage" konnte nicht geladen werden.
1>------ Neues Erstellen gestartet: Projekt: strako01-vc14, Konfiguration: Debug x64 ------
1>Deleting intermediate files and output files for project 'strako01-vc14', configuration 'Debug|x64'.
1>strako01-vc14: warning: TargetPath(C:\source\for\strako01\build\strako01-debug-x64-vc14\strako01-vc14.lib) does not match the Library's OutputFile property value (c:\source\dicadkernel\lib\debug\x64\strako01d-x64-vc14.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>Compiling with Intel(R) Visual Fortran Compiler 17.0.2.187 [Intel(R) 64]...
1>lfnsti.for

and so on... what's the result?
We have the correct directory and we have x64 object files.

c:\source\for\strako01\build>dir
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: 9A75-68C2

 Verzeichnis von c:\source\for\strako01\build

27.04.2017  11:53    <DIR>          .
27.04.2017  11:53    <DIR>          ..
27.04.2017  11:53                 0 call
27.04.2017  11:21    <DIR>          strako01-debug-vc14
27.04.2017  11:53    <DIR>          strako01-debug-x64-vc14
               1 Datei(en),              0 Bytes
               4 Verzeichnis(se), 307.390.033.920 Bytes frei

c:\source\for\strako01\build>dumpbin /HEADERS strako01-debug-x64-vc14\stift.obj
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file strako01-debug-x64-vc14\stift.obj

File Type: COFF OBJECT

FILE HEADER VALUES
            8664 machine (x64)
               8 number of sections
        5901BF91 time date stamp Thu Apr 27 11:53:21 2017
            1D80 file pointer to symbol table
              3E number of symbols
               0 size of optional header
               0 characteristics
       

The file generated by the IA-32 has 9188 Bytes, the file of the Intel64 compiler has 9208 bytes.

At least instead of offering a 32bit and 64bit version we could offer two different 64 bit versions... which doesn't solve my problem but maybe noone becomes aware of it... but I don't think my boss would accept this as a solution. ;)

0 Kudos
Kevin_D_Intel
Employee
935 Views

Within your property settings, under Properties > Fortran > Command Line please add the option /watch and then rerun the same x86 and x64 builds that you showed in your last post and send me both of the Buildlog.htm files:

C:\source\for\strako01\build\strako01-debug-vc14\BuildLog.htm
C:\source\for\strako01\build\strako01-debug-x64-vc14\BuildLog.htm

Could you also share your C:\source\for\strako01\strako01-vc14.vfproj and  corresponding .sln file too.

0 Kudos
Reply