I am using Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 with Intel Parallel Studio XE 2016 Composer Edition for C++ WIndows and Intel Parallel Studio XE Update 1 Composer Edition for Fortran Windows. Compiling pure C++ project works fine or FORTRAN projects that call C++ is fine but C++ calling FORTRAN fails to find ifconsol.lib. When I look at the VCC++ directories / Library Directories the $(IFORT_COMPILER16) macro is used but it is not defined if I select the macros button. There is no IFORT_COMPILER macro defined. What do I do to tell Visual Studio the value of IFORT_COMPILER16 should be?
Which version of Intel Fortran do you have installed? Depending on that, you should have either IFORT_COMPILER16 or IFORT_COMPILER17 defined among your environment variables.
You reported that you have "Intel Parallel Studio XE Update 1 Composer Edition for Fortran Windows". That is ambiguous, since that can apply to Parallel Studio 2014, 2015, 2016 and 2017.
IFORT_COMPILER16 is a system-wide environment variable setting established during the PSXE installation.
There's different ways to check its setting. Via a command-prompt window, enter: echo %IFORT_COMPILER16%
Via the Control Panel, under System > Advanced system settings, under the Advanced tab, click Environment Variables, then look under System variables
For the C++ link to resolve the Fortran RTLs, refer to Configuring Visual Studio for Mixed-Language Applications for the one-time VS configuration setup.
I am using 2016.1.146. So for the Macro to appear in Visual Studio I simply need to define the environment variable as usual. That was very straight forward;
I had just not understood the connection between macros in Visual Studio and environment variables . Thank You
Thank you both for your help. The issue I had was that the environment variable had not been created when I installed Parallel Studio for some reason. Once I had defined it C++ calling FORTRAN builds without a problem. If IFORT_COMPILER16 was not created are there any other environment variables that should exist that are going to catch me out?
For the typical user who uses only one (often the latest) version of the Intel compiler, the installer takes care of setting up the global environment. If you want more than one version of the compiler to be available on your system, to be chosen at will, or you wish to use other vendor's compiler packages, you would not want the installer to mess up the global environment. In these situations, the compiler's startup batch files "compilervars.bat", etc., will set up the environment variables for the command window session that the batch file opens.
Typically, compiler packages customize %INCLUDE%, %LIB% and %PATH%. IDE-s such as Visual Studio may also modify file-associations when they are installed or updated.
Only a few are created at install time (e.g. INTEL_LICENSE_FILE, INTEL_DEV_REDIST, IFORT_COMPILER16). Some are not unique to Fortran the your C++ installation could also have defined those.
I *think* you are ok but we’d like to inspect your install log files to see whether those contain clues why this happened. If you could please zip up: %TEMP%\pset_tmp_PSXE2016_*\*.* and attach that to a private reply to me then we will inspect those.
A quick way to open the folder associated with %TEMP% is to open a File Explorer window and in the address bar type %TEMP%, and then in the search box filter enter: pset_tmp_PSXE2016_*.*
Ok. It is actually a folder not a single file. %TEMP% is unique to one’s user login account so perhaps someone else installed the compiler or if not then perhaps they've already been cleaned off.
Our installer developer believes you are ok having defined the variable so no need to dig deeper. Let us know if you see other oddities.