We have run into a problem installing multiple versions of our application which uses the Intel Fortran runtime libraries.
The scenario is this.
Application version 1 uses some Fortran dlls compiled with a 2013 Fortran version. The install for this application thus uses the runtime libraries from 2013 Fortran (Version numbers vary here a little, but in general the binaries have major version number 14).
Application version 2 uses an updated 2015 Fortran to compile our dlls and thus uses runtime libraries from 2015 Fortran (Again, there is some variation in the version numbers, but in general these binaries have major version number 15).
The installation of the Intel libraries for both versions of the application is managed through the Intel installer (merge module) through our installation package. The following installation procedure on the same machine causes application version 1 to break:
Install version 1 (this installs the redistributable Fortran binaries to ...Common Files\Intel\Shared Libraries\redist\ia32\compiler). These are the 2013 version binaries with major version number 14.
Install version 2 (this installs the redistributable Fortran binaries to ...Common Files\Intel\Shared Libraries\redist\ia32\compiler). These are the 2015 version binaries with major version number 15.
As part of the installation of version 2, the redistributable Fortran binaries are overwritten with the newest binaries.
Version 2 of our application runs fine. And, on startup of version 1 of the application, all is ok. But, when we invoke code that uses the Fortran binaries, the application crashes.
This seems to indicate a problem with binary compatibility.
Could someone provide more information on expectation of binary compatibility; that there is no "versioning" expected of the redistributables i.e. installation of an older version followed by a newer version will yield the newer version only which should be compatible with our binaries compiled against the older Fortran version. Additionally, since we need to be able to support client installs of multiple versions of our application compiled against different (seemingly incompatible Fortran versions), we are considering moving the required redistributables into our application install location as a workaround for this problem. We'd like some feedback on potential pitfalls of this approach.